From abf0f7cb228d7e0c61be8314d97f70ecc6bfaf36 Mon Sep 17 00:00:00 2001 From: CodersAcademy006 <104912634+CodersAcademy006@users.noreply.github.com> Date: Tue, 13 Aug 2024 10:05:57 +0530 Subject: [PATCH] feat: Update Solution.java --- .../0391.Perfect Rectangle/Solution.java | 72 ++++++++----------- 1 file changed, 29 insertions(+), 43 deletions(-) diff --git a/solution/0300-0399/0391.Perfect Rectangle/Solution.java b/solution/0300-0399/0391.Perfect Rectangle/Solution.java index a6d96406f7669..d14c224b6fe67 100644 --- a/solution/0300-0399/0391.Perfect Rectangle/Solution.java +++ b/solution/0300-0399/0391.Perfect Rectangle/Solution.java @@ -1,9 +1,12 @@ -class Solution { +import java.util.HashMap; +import java.util.Map; + +public class Solution { public boolean isRectangleCover(int[][] rectangles) { - long area = 0; + int area = 0; int minX = rectangles[0][0], minY = rectangles[0][1]; int maxX = rectangles[0][2], maxY = rectangles[0][3]; - Map cnt = new HashMap<>(); + Map cnt = new HashMap<>(); for (int[] r : rectangles) { area += (r[2] - r[0]) * (r[3] - r[1]); @@ -13,52 +16,35 @@ public boolean isRectangleCover(int[][] rectangles) { maxX = Math.max(maxX, r[2]); maxY = Math.max(maxY, r[3]); - cnt.merge(new Pair(r[0], r[1]), 1, Integer::sum); - cnt.merge(new Pair(r[0], r[3]), 1, Integer::sum); - cnt.merge(new Pair(r[2], r[3]), 1, Integer::sum); - cnt.merge(new Pair(r[2], r[1]), 1, Integer::sum); + String[] points = { + r[0] + "," + r[1], + r[0] + "," + r[3], + r[2] + "," + r[3], + r[2] + "," + r[1] + }; + + for (String point : points) { + cnt.put(point, cnt.getOrDefault(point, 0) + 1); + } } - if (area != (long) (maxX - minX) * (maxY - minY) - || cnt.getOrDefault(new Pair(minX, minY), 0) != 1 - || cnt.getOrDefault(new Pair(minX, maxY), 0) != 1 - || cnt.getOrDefault(new Pair(maxX, maxY), 0) != 1 - || cnt.getOrDefault(new Pair(maxX, minY), 0) != 1) { + if (area != (maxX - minX) * (maxY - minY) + || cnt.getOrDefault(minX + "," + minY, 0) != 1 + || cnt.getOrDefault(minX + "," + maxY, 0) != 1 + || cnt.getOrDefault(maxX + "," + maxY, 0) != 1 + || cnt.getOrDefault(maxX + "," + minY, 0) != 1) { return false; } - cnt.remove(new Pair(minX, minY)); - cnt.remove(new Pair(minX, maxY)); - cnt.remove(new Pair(maxX, maxY)); - cnt.remove(new Pair(maxX, minY)); - - return cnt.values().stream().allMatch(c -> c == 2 || c == 4); - } - - private static class Pair { - final int first; - final int second; + cnt.remove(minX + "," + minY); + cnt.remove(minX + "," + maxY); + cnt.remove(maxX + "," + maxY); + cnt.remove(maxX + "," + minY); - Pair(int first, int second) { - this.first = first; - this.second = second; + for (int c : cnt.values()) { + if (c != 2 && c != 4) return false; } - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (o == null || getClass() != o.getClass()) { - return false; - } - Pair pair = (Pair) o; - return first == pair.first && second == pair.second; - } - - @Override - public int hashCode() { - return Objects.hash(first, second); - } + return true; } -} \ No newline at end of file +}