# leetcode 1037. 有效的回旋镖（三点共线问题）

### 【题目】1037. 有效的回旋镖

``````输入：[[1,1],[2,3],[3,2]]

``````

``````输入：[[1,1],[2,2],[3,3]]

``````

points.length == 3
points[i].length == 2
0 <= points[i][j] <= 100

### 【解题思路1】斜率法/向量外积

a、b两点的斜率为 k1 = (y2 – y1) / (x2 – x1)
a、c两点的斜率为 k2 = (y3 – y1) / (x3 – x1)

(y2 – y1) * (x3 – x1) 与 (y3 – y1) * (x2 – x1)

``````class Solution {
public boolean isBoomerang(int[][] points) {
int k1 = (points[1][1] - points[0][1]) * (points[2][0] - points[0][0]);
int k2 = (points[2][1] - points[0][1]) * (points[1][0] - points[0][0]);
return (k1 != k2);
}
}
``````

### 【解题思路2】三角形判定 – 鞋带公式

``````//鞋带公式
class Solution {
public boolean isBoomerang(int[][] points) {
return Math.abs(points[0][0] * points[1][1]
+ points[1][0] * points[2][1]
+ points[2][0] * points[0][1]
- points[0][1] * points[1][0]
- points[1][1] * points[2][0]
- points[2][1] * points[0][0]) > 0;
}
}
``````
原文作者：Sophia_fez
原文地址: https://blog.csdn.net/XunCiy/article/details/106122416
本文转自网络文章，转载此文章仅为分享知识，如有侵权，请联系博主进行删除。