From 9a14fbef654695dcdfd5964fc161204bebdb7841 Mon Sep 17 00:00:00 2001 From: Tetsuya Hasegawa Date: Thu, 23 May 2024 10:49:45 +0900 Subject: [PATCH] Create 0149-max-points-on-a-line.java --- java/0149-max-points-on-a-line.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 java/0149-max-points-on-a-line.java diff --git a/java/0149-max-points-on-a-line.java b/java/0149-max-points-on-a-line.java new file mode 100644 index 000000000..660794067 --- /dev/null +++ b/java/0149-max-points-on-a-line.java @@ -0,0 +1,23 @@ +class Solution { + public int maxPoints(int[][] points) { + int res = 1; + for (int i = 0; i < points.length; i++) { + int[] p1 = points[i]; + Map counter = new HashMap<>(); + for (int j = i + 1; j < points.length; j++) { + int[] p2 = points[j]; + double slope; + if (p1[0] == p2[0]) { + slope = Double.MAX_VALUE; + } else if (p1[1] == p2[1]) { + slope = 0; + } else { + slope = (double) (p2[1] - p1[1]) / (double) (p2[0] - p1[0]); + } + counter.put(slope, counter.getOrDefault(slope, 0) + 1); + res = Math.max(res, counter.get(slope) + 1); + } + } + return res; + } +}