美文网首页
leetcode每日一题 python解法 4月12日

leetcode每日一题 python解法 4月12日

作者: Never肥宅 | 来源:发表于2020-04-12 00:54 被阅读0次

难度:困难

题目内容:

给定两条线段(表示为起点start = {X1, Y1}和终点end = {X2, Y2}),如果它们有交点,请计算其交点,没有交点则返回空值。

要求浮点型误差不超过10^-6。若有多个交点(线段重叠)则返回 X 值最小的点,X 坐标相同则返回 Y 值最小的点。

示例 1:

输入:
line1 = {0, 0}, {1, 0}
line2 = {1, 1}, {0, -1}
输出: {0.5, 0}
示例 2:

输入:
line1 = {0, 0}, {3, 3}
line2 = {1, 1}, {2, 2}
输出: {1, 1}
示例 3:

输入:
line1 = {0, 0}, {1, 1}
line2 = {1, 0}, {2, 1}
输出: {},两条线段没有交点

题解:

中学肯定学过两点的直线方程,可以先求出交点的表达式,然后计算出来这个交点,看看这个交点是否同时在两个线段上。
当然了,因为是数字化的,肯定有量化误差,所以允许10^-6的误差。
\frac{y - y_{12}}{y_{11} - y_{12}} = \frac{x - x_{12}}{ (x_{11} - x_{12})}
\frac{y - y_{22}}{y_{21} - y_{22}} = \frac{x - x_{22}}{ (x_{21} - x_{22})}
解它!
有点麻烦噢
然后还得再讨论以下垂直与坐标轴的情况
因为分母不能为0嘛

相关文章

网友评论

      本文标题:leetcode每日一题 python解法 4月12日

      本文链接:https://www.haomeiwen.com/subject/fmymmhtx.html