【每日一题】 1037有效的回旋镖

122 阅读1分钟

给定一个数组 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  

来源:力扣(LeetCode) 链接:leetcode.cn/problems/va… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

1.刚开始想到的是 两点之间建立直线方程,然后第三个点套一下

2.后来发现太麻烦,会产生int和浮点类型的转换 有精度问题

3.梦回大学,向量叉乘解决之

附代码

class Solution {
    public boolean isBoomerang(int[][] points) {
        int[] v1 = {points[1][0] - points[0][0] , points[1][1] - points[0][1]};
        int[] v2 = {points[2][0] - points[0][0] , points[2][1] - points[0][1]};
        return v1[0] * v1[1] - v1[1] * v2[0] != 0;
        
    }
}