有效的回旋镖

给定一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点,如果这些点构成一个 回旋镖 则返回 true 。
回旋镖 定义为一组三个点,这些点 各不相同 且 不在一条直线上 。

  • 输入:points = [[1,1],[2,3],[3,2]]

  • 输出:true

  • 输入:points = [[1,1],[2,2],[3,3]]

  • 输出:false

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var isBoomerang = function(points) {
let p1 = points[0].join(',');
let p2 = points[1].join(',');
let p3 = points[2].join(',');
if (p1 === p2 || p2 === p3 || p1 === p3) {
return false;
}
function getSlope(p1, p2) {
const numerator = p2[1] - p1[1];
if (numerator === 0) return 0;
const denominator = p2[0] - p1[0];
if (denominator === 0) return 0;
return numerator / denominator;
}
const slope1 = getSlope(points[0], points[1]);
const slope2 = getSlope(points[0], points[2]);
const slope3 = getSlope(points[1], points[2]);
return slope1 !== slope2 || slope1 !== slope3 || slope2 !== slope3;
};