## DEV Community

Abhishek Chaudhary

Posted on

# Check If It Is a Straight Line

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
``````