Skip to content

Commit abf0f7c

Browse files
feat: Update Solution.java
1 parent cd6eed5 commit abf0f7c

File tree

1 file changed

+29
-43
lines changed

1 file changed

+29
-43
lines changed
Lines changed: 29 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
class Solution {
1+
import java.util.HashMap;
2+
import java.util.Map;
3+
4+
public class Solution {
25
public boolean isRectangleCover(int[][] rectangles) {
3-
long area = 0;
6+
int area = 0;
47
int minX = rectangles[0][0], minY = rectangles[0][1];
58
int maxX = rectangles[0][2], maxY = rectangles[0][3];
6-
Map<Pair, Integer> cnt = new HashMap<>();
9+
Map<String, Integer> cnt = new HashMap<>();
710

811
for (int[] r : rectangles) {
912
area += (r[2] - r[0]) * (r[3] - r[1]);
@@ -13,52 +16,35 @@ public boolean isRectangleCover(int[][] rectangles) {
1316
maxX = Math.max(maxX, r[2]);
1417
maxY = Math.max(maxY, r[3]);
1518

16-
cnt.merge(new Pair(r[0], r[1]), 1, Integer::sum);
17-
cnt.merge(new Pair(r[0], r[3]), 1, Integer::sum);
18-
cnt.merge(new Pair(r[2], r[3]), 1, Integer::sum);
19-
cnt.merge(new Pair(r[2], r[1]), 1, Integer::sum);
19+
String[] points = {
20+
r[0] + "," + r[1],
21+
r[0] + "," + r[3],
22+
r[2] + "," + r[3],
23+
r[2] + "," + r[1]
24+
};
25+
26+
for (String point : points) {
27+
cnt.put(point, cnt.getOrDefault(point, 0) + 1);
28+
}
2029
}
2130

22-
if (area != (long) (maxX - minX) * (maxY - minY)
23-
|| cnt.getOrDefault(new Pair(minX, minY), 0) != 1
24-
|| cnt.getOrDefault(new Pair(minX, maxY), 0) != 1
25-
|| cnt.getOrDefault(new Pair(maxX, maxY), 0) != 1
26-
|| cnt.getOrDefault(new Pair(maxX, minY), 0) != 1) {
31+
if (area != (maxX - minX) * (maxY - minY)
32+
|| cnt.getOrDefault(minX + "," + minY, 0) != 1
33+
|| cnt.getOrDefault(minX + "," + maxY, 0) != 1
34+
|| cnt.getOrDefault(maxX + "," + maxY, 0) != 1
35+
|| cnt.getOrDefault(maxX + "," + minY, 0) != 1) {
2736
return false;
2837
}
2938

30-
cnt.remove(new Pair(minX, minY));
31-
cnt.remove(new Pair(minX, maxY));
32-
cnt.remove(new Pair(maxX, maxY));
33-
cnt.remove(new Pair(maxX, minY));
34-
35-
return cnt.values().stream().allMatch(c -> c == 2 || c == 4);
36-
}
37-
38-
private static class Pair {
39-
final int first;
40-
final int second;
39+
cnt.remove(minX + "," + minY);
40+
cnt.remove(minX + "," + maxY);
41+
cnt.remove(maxX + "," + maxY);
42+
cnt.remove(maxX + "," + minY);
4143

42-
Pair(int first, int second) {
43-
this.first = first;
44-
this.second = second;
44+
for (int c : cnt.values()) {
45+
if (c != 2 && c != 4) return false;
4546
}
4647

47-
@Override
48-
public boolean equals(Object o) {
49-
if (this == o) {
50-
return true;
51-
}
52-
if (o == null || getClass() != o.getClass()) {
53-
return false;
54-
}
55-
Pair pair = (Pair) o;
56-
return first == pair.first && second == pair.second;
57-
}
58-
59-
@Override
60-
public int hashCode() {
61-
return Objects.hash(first, second);
62-
}
48+
return true;
6349
}
64-
}
50+
}

0 commit comments

Comments
 (0)