美文网首页
每日一题-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