Skip to content

Added solution for problem 1232 #67

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 14 additions & 19 deletions src/main/java/com/fishercoder/solutions/_1232.java
Original file line number Diff line number Diff line change
@@ -1,44 +1,39 @@
package com.fishercoder.solutions;

/**
* 1232. Check If It Is a Straight Line
* 1232. 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.
* 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
* Explanation: The minimum absolute difference is 1. List all pairs with difference equal to 1 in ascending order.
*
* 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.
* */
public class _1232 {
public static class Solution1 {
/**
* To check if they share the same slope, we use this formula:
*
* check whether (y4 - y3)/(x4- x3) equals to (y2 - y1)/(x2 - x1)
* considering denominator could be zero, we'll change it to use multiplication instead of division,
* thus it becomes
* check whether (y4 - y3)*(x2 - x1) equals (x4 - x3)*(y2 - y1)
* */
class Solution {
public boolean checkStraightLine(int[][] coordinates) {
for (int i = 2; i < coordinates.length - 1; i++) {
if ((coordinates[1][0] - coordinates[0][0]) * (coordinates[i + 1][1] - coordinates[i][1])
!= (coordinates[1][1] - coordinates[0][1]) * (coordinates[i + 1][0] - coordinates[i][0])) {
int x0 = coordinates[0][0];
int y0 = coordinates[0][1];
int x1 = coordinates[1][0];
int y1 = coordinates[1][1];
int dx = x1 - x0, dy = y1 - y0;
for (int[] co : coordinates) {
int x = co[0], y = co[1];
if (dx * (y - y1) != dy * (x - x1))
return false;
}
}
return true;
}
}
}
}