Check if It Is a Straight Line
Created: May 8, 2020 by [lek-tin]
Last updated: May 8, 2020
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
Java
class Solution {
public boolean checkStraightLine(int[][] coordinates) {
double slope;
int N = coordinates.length;
if (coordinates[1][1] == coordinates[0][1]) {
slope = 0;
} else if (coordinates[1][0] == coordinates[0][0]) {
slope = Double.MAX_VALUE;
} else {
int dy = coordinates[1][1] - coordinates[0][1];
int dx = coordinates[1][0] - coordinates[0][0];
slope = Math.abs(dy / (double)dx);
}
if (slope == 0) {
for (int i = 1; i < N; i++) {
if (coordinates[i][1] != coordinates[0][1]) {
return false;
}
}
}
if (slope == Integer.MAX_VALUE) {
for (int i = 1; i < N; i++) {
if (coordinates[i][0] != coordinates[0][0]) {
return false;
}
}
}
System.out.println(slope);
for (int i = 1; i < N; i++) {
int dy = coordinates[i][1] - coordinates[0][1];
int dx = coordinates[i][0] - coordinates[0][0];
if (coordinates[i][0] - coordinates[0][0] == 0) {
return false;
}
if (Math.abs(dy / (double)dx) != slope) {
return false;
}
}
return true;
}
}