有效的回旋镖
给定一个数组 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
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/valid-boomerang
题解:
该题就是一个数学问题,判断三点是否在一条直线上。首先算出其中两点所构成的直线方程,然后判断第三点是否在该直线上。具体代码如下:
class Solution {
public boolean isBoomerang(int[][] points) {
//将三点坐标抽离出来
int x1=points[0][0],y1=points[0][1];
int x2=points[1][0],y2=points[1][1];
int x3=points[2][0],y3=points[2][1];
//算出其中两点构成的直线方程Ax+By+C=0(数学yyds)
int A=y1-y2;
int B=x2-x1;
int C=x1*y2-x2*y1;
//返回第三点是否在该直线上
return A*x3+B*y3+C!=0;
}
}