You are given an array coordinates
, coordinates[i] = [x, y]
, where [x, y]
represents the coordinate of a point. Check if these points make a straight line in the XY plane.
Example 1:
Input: coordinates = [[1,2],[2,3],[3,4],[4,5],[5,6],[6,7]]
Output: true
Example 2:
Input: coordinates = [[1,1],[2,2],[3,4],[4,5],[5,6],[7,7]]
Output: false
Constraints:
-
2 <= coordinates.length <= 1000
-
coordinates[i].length == 2
-
-10^4 <= coordinates[i][0], coordinates[i][1] <= 10^4
-
coordinates
contains no duplicate point.
SOLUTION:
class Solution:
def gcd(self, a, b):
while b:
a, b = b, a % b
return a
def checkStraightLine(self, coordinates: List[List[int]]) -> bool:
n = len(coordinates)
m = None
for i in range(1, n):
dy = coordinates[i][1] - coordinates[0][1]
dx = coordinates[i][0] - coordinates[0][0]
sign = -1 if (dx >= 0) ^ (dy >= 0) else 1
if dx == 0 or dy == 0:
sign = 1
curr = (sign, abs(dy), abs(dx))
mul = self.gcd(curr[1], curr[2])
if mul > 0:
curr = (curr[0], curr[1] // mul, curr[2] // mul)
if m:
if curr != m:
return False
else:
m = curr
return True
Top comments (0)