1037.有效的回旋镖
【LetMeFly】1037.有效的回旋镖:斜率 - 一行解决
力扣题目链接:https://leetcode.cn/problems/valid-boomerang/
给定一个数组 points
,其中 points[i] = [xi, yi]
表示 X-Y 平面上的一个点,如果这些点构成一个 回旋镖 则返回 true
。
回旋镖 定义为一组三个点,这些点 各不相同 且 不在一条直线上 。
示例 1:
输入:points = [[1,1],[2,3],[3,2]] 输出:true
示例 2:
输入:points = [[1,1],[2,2],[3,3]] 输出:false
提示:
points.length == 3
points[i].length == 2
0 <= xi, yi <= 100
方法一:斜率 - 一行解决
假设第一个点和第二个点的连线的斜率是$k_1$,第二个点和第三个点的连线的斜率是$k_2$,那么当$k_1\neq k_2$时,三点不共线,能构成“回旋镖”
斜率的求法:$k=\frac{\Delta y}{\Delta x}$
但是出现除法的话,一是会有精度问题,而是还要特判分母是否为0。
因此要判断$\frac{\Delta y1}{\Delta x1}$是否等于$\frac{\Delta y2}{\Delta x2}$,只需要判断$\Delta y1 \times \Delta x2$是否等于$\Delta y2 \times \Delta x1$即可。
- 时间复杂度$O(1)$
- 空间复杂度$O(1)$
AC代码
C++
1 |
|
同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/125793916
1037.有效的回旋镖
https://blog.letmefly.xyz/2022/07/14/LeetCode 1037.有效的回旋镖/