通过万岁!!!
- 题目:就是给你三个点,让我们判断是不是在一条直线上。
- 思路:首先我们都知道,两点确定一条直线,直线表达式为(x-x1)/(x2-x1) == (y-y1)/(y2-y1)。因此,我们只需要将x和y变成第三个点,然后判断是不是相等,就可以判断是不是在一条直线上。然后这里又特殊情况,就是点重合,这时候分母可能是0,所以我们将方程转换一下。 (x-x1) * (y2-y1)==(y-y1) * (x2-x1),这样就可以直接判断了。
- 技巧:就是用到了初中数学知识,还是挺简单的。
java代码
class Solution {
public boolean isBoomerang(int[][] points) {
// 前两个点确定一条直线(x-x1)/(x2-x1)==(y-y1)/(y2-y1)
if (1.0 * (points[2][0] - points[0][0]) * (points[1][1] - points[0][1]) == 1.0 * (points[2][1] - points[0][1]) * (points[1][0] - points[0][0])) {
return false;
} else {
return true;
}
}
}
- 总结:学好数理化,走遍天下都不怕,果然数学知识还是非常重要的。