美文网首页
每日一题-1232. 缀点成线

每日一题-1232. 缀点成线

作者: 程序员小2 | 来源:发表于2022-06-09 08:41 被阅读0次

题目

给定一个数组 coordinates ,其中 coordinates[i] = [x, y] , [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断,这些点是否在该坐标系中属于同一条直线上。

示例 1:


image.png

输入:coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]
输出:true
示例 2:

image.png

输入:coordinates = [[1,1],[2,2],[3,4],[4,5],[5,6],[7,7]]
输出:false

提示:

2 <= coordinates.length <= 1000
coordinates[i].length == 2
-10^4 <= coordinates[i][0], coordinates[i][1] <= 10^4
coordinates 中不含重复的点

java代码:

class Solution {
    public boolean checkStraightLine(int[][] coordinates) {
 /*
        *   一般式:Ax+By+C=0(AB≠0)
        *   两点式:(y-y1)/(x-x1)=(y-y2)/(x-x2)  (直线过定点(x1,y1),(x2,y2))
        */

        // 这里取定点为coordinates[0],和coordinates[n-1]
        // 为避免除法运算,这里用“两内项的积等于两外项的积”计算
        int n = coordinates.length;
        for(int i = 1; i < n-1; ++i)
        {
            if(
                (coordinates[i][0] - coordinates[0][0])*    /* (x-x1)*(y-y2) */
                (coordinates[i][1] - coordinates[n-1][1])
                !=
                (coordinates[i][1] - coordinates[0][1])*    /* (y-y1)*(x-x2) */
                (coordinates[i][0] - coordinates[n-1][0])

            )   return false;
        }
        return true;
    }
}

相关文章

网友评论

      本文标题:每日一题-1232. 缀点成线

      本文链接:https://www.haomeiwen.com/subject/nwopmrtx.html