Statement
You are given an array, coordinates
, where each element in coordinates[i]
=[x,y] represents the coordinates of a point on a 2D plane. Determine whether all the points in the array lie on a single straight line in the XY plane.
Constraints:
2≤ coordinates.length
≤1000
coordinates[i].length
==2
−104≤ coordinates[i][0]
, coordinates[i][1]
≤104
coordinates
do not contain any duplicate points.
Solution
We need to determine whether a given array of coordinates
in a 2D plane lies in a single straight line. This problem is approached using the Math and Geometry pattern, using the slope of a straight line.
Key intuition:
The slope represents the change in y-coordinates relative to the change in x-coordinates for any two points on the line. So, the slope between two points, (x1,y1) and (x2,y2), is defined as:
slope=ΔXΔY=x2−x1y2−y1
The slope property for straight lines states that for a set of points to lie on a straight line, the slope between all the points must remain constant.
To simplify the solution and reduce the computational overhead of checking the slope property for all points, we can fix the first point as a reference and compute the slopes between this reference point and all other points instead of checking all possible pairs of points.
For example: If we have points P0, P1, and P2; the slope of the line between P0 and P1 is ΔX1ΔY1. Also, the slope between P0 and the subsequent point P2 is ΔX2ΔY2. So, for the points, P0, P1 and P2 to lie in the straight line, they should have equal slopes, i.e. ΔX1ΔY1=ΔX2ΔY2. If these slopes match, the points lie in a straight line; otherwise not.
Let’s understand this with the help of a visualization: