当前位置: 首页 > news >正文

网站建设服务上海如何安装wordpress博客

网站建设服务上海,如何安装wordpress博客,中建招聘网,360导航建设网站怎么建【问题描述】面试题 16.03. 交点 给定两条线段#xff08;表示为起点start {X1, Y1}和终点end {X2, Y2}#xff09;#xff0c;如果它们有交点#xff0c;请计算其交点#xff0c;没有交点则返回空值。要求浮点型误差不超过10^-6。若有多个交点#xff08;线段重叠表示为起点start {X1, Y1}和终点end {X2, Y2}如果它们有交点请计算其交点没有交点则返回空值。要求浮点型误差不超过10^-6。若有多个交点线段重叠则返回 X 值最小的点X 坐标相同则返回 Y 值最小的点。 【解答思路】 https://leetcode-cn.com/problems/intersection-lcci/solution/jiao-dian-by-leetcode-solution/ 需要认真考虑所有情况 联立方程各种优化 1. 时间复杂度O(1) 空间复杂度O(1) class Solution {public double[] intersection(int[] start1, int[] end1, int[] start2, int[] end2) {int x1 start1[0], y1 start1[1];int x2 end1[0], y2 end1[1];int x3 start2[0], y3 start2[1];int x4 end2[0], y4 end2[1];double[] ans new double[2];Arrays.fill(ans, Double.MAX_VALUE);// 判断两直线是否平行if ((y4-y3)*(x2-x1) (y2-y1)*(x4-x3)) {// 判断两直线是否重叠if ((y2-y1)*(x3-x1) (y3-y1)*(x2-x1)) {// 判断 (x3, y3) 是否在「线段」(x1, y1)~(x2, y2) 上if (isInside(x1, y1, x2, y2, x3, y3)) {updateRes(ans, x3, y3);}// 判断 (x4, y4) 是否在「线段」(x1, y1)~(x2, y2) 上if (isInside(x1, y1, x2, y2, x4, y4)) {updateRes(ans, (double)x4, (double)y4);}// 判断 (x1, y1) 是否在「线段」(x3, y3)~(x4, y4) 上if (isInside(x3, y3, x4, y4, x1, y1)) {updateRes(ans, (double)x1, (double)y1);}// 判断 (x2, y2) 是否在「线段」(x3, y3)~(x4, y4) 上if (isInside(x3, y3, x4, y4, x2, y2)) {updateRes(ans, (double)x2, (double)y2);}}} else {// 联立方程得到 t1 和 t2 的值double t1 (double)(x3 * (y4 - y3) y1 * (x4 - x3) - y3 * (x4 - x3) - x1 * (y4 - y3)) / ((x2 - x1) * (y4 - y3) - (x4 - x3) * (y2 - y1));double t2 (double)(x1 * (y2 - y1) y3 * (x2 - x1) - y1 * (x2 - x1) - x3 * (y2 - y1)) / ((x4 - x3) * (y2 - y1) - (x2 - x1) * (y4 - y3));// 判断 t1 和 t2 是否均在 [0, 1] 之间if (t1 0.0 t1 1.0 t2 0.0 t2 1.0) {ans[0] x1 t1 * (x2 - x1);ans[1] y1 t1 * (y2 - y1);}}if (ans[0] Double.MAX_VALUE) {return new double[0];}return ans;}// 判断 (x, y) 是否在「线段」(x1, y1)~(x2, y2) 上// 这里的前提是 (x, y) 一定在「直线」(x1, y1)~(x2, y2) 上private boolean isInside(int x1, int y1, int x2, int y2, int x, int y) {// 若与 x 轴平行只需要判断 x 的部分// 若与 y 轴平行只需要判断 y 的部分// 若为普通线段则都要判断return (x1 x2 || (Math.min(x1, x2) x x Math.max(x1, x2))) (y1 y2 || (Math.min(y1, y2) y y Math.max(y1, y2)));}private void updateRes(double[] ans, double x, double y) {if (x ans[0] || (x ans[0] y ans[1])) {ans[0] x;ans[1] y;}} }2. 时间复杂度O(N) 空间复杂度O(1) 【总结】 1. 编程需要一定的数学基础思维要有广度和深度 2. 善于封装函数
http://www.fuzeviewer.com/news/4367/

相关文章:

  • 游戏ui设计师网站有哪些在线图片翻译
  • 做网站难度大吗wordpress投票插件
  • 可以看任何网站的浏览器深圳石岩建网站
  • 没有网站怎么做淘宝客学做婴儿衣服网站好
  • jsp网站建设期末作业编程怎么入门
  • 做网站送邮箱南京网站制作系统
  • 沈阳商城网站制作wordpress 获取域名
  • 左侧 导航 网站网站排版怎么做
  • 建设银行网站怎么修改手机号码北京市住房和城乡建设厅网站
  • 住房和城乡建设部网站职称查询工具网
  • 网站打不开 别人能打开小蜜蜂wordpress采集
  • 电子商务网站设计网络域名侵权十大案例
  • 怎么改版网站成都企业模版网站建设
  • 收费网站怎么免费单位做网站费用怎么记账
  • 模版网站如何优化做网站必须要购买空间吗
  • 网站制作营销型外贸人才网招聘网
  • 怎么自己做免费网站网站安全 维护
  • 产品毕业设计网站建设史上最全设计网站
  • 北京专业做网站推广平台营销策略都有哪些
  • 做游戏都需要什么网站wordpress json 制作
  • 泉州制作网站软件园区官方网站建设
  • 购物商城建设网站网站建设与维护作业
  • 网站怎样做seo百度产品大全入口
  • 公司网站免费自建WordPress自定义icon
  • 友情链接的网站微信企业网站html5模板
  • 网站建设过程自己如何做网站优化
  • 手机网站版面设计安阳seo网站优化
  • 徐州网站建站网站流量利用
  • 深圳做网站哪家邀请医院建设网站的通知
  • 网页设计实训报告技术难点百度seo效果