diff --git a/src/main/java/com/fishercoder/solutions/_1232.java b/src/main/java/com/fishercoder/solutions/_1232.java index 5ec941d579..9769be055d 100644 --- a/src/main/java/com/fishercoder/solutions/_1232.java +++ b/src/main/java/com/fishercoder/solutions/_1232.java @@ -1,20 +1,19 @@ 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 @@ -22,23 +21,19 @@ * 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; } } -} +} \ No newline at end of file