DEV Community

Abhishek Chaudhary
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
Enter fullscreen mode Exit fullscreen mode

Top comments (0)