0
点赞
收藏
分享

微信扫一扫

LeetCode简单题之缀点成线

题目

给定一个数组 coordinates ,其中 coordinates[i] = [x, y] , [x, y] 表示横坐标为 x、纵坐标为 y 的点。请你来判断,这些点是否在该坐标系中属于同一条直线上。
示例 1:
在这里插入图片描述
输入:coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]
输出:true
示例 2:
在这里插入图片描述
输入: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 中不含重复的点

解题思路

  我们可以先利用两个点求出一个直线,然后将其他的点带入之后判断等式是否成立。在这里我们使用两点式来构造直线方程:(x-x1)/(x2-x1)=(y-y1)/(y2-y1)。为了避免除数为0,采用其交叉相乘的等式。

class Solution:
    def checkStraightLine(self, coordinates: List[List[int]]) -> bool:
        f=lambda x,y:(x-coordinates[0][0])*(coordinates[1][1]-coordinates[0][1])!=(y-coordinates[0][1])*(coordinates[1][0]-coordinates[0][0])
        for i,j in coordinates[2:]:
            if f(i,j):
                return False
        return True

在这里插入图片描述

举报

相关推荐

0 条评论