1
- class Solution {
1
+ import java .util .HashMap ;
2
+ import java .util .Map ;
3
+
4
+ public class Solution {
2
5
public boolean isRectangleCover (int [][] rectangles ) {
3
- long area = 0 ;
6
+ int area = 0 ;
4
7
int minX = rectangles [0 ][0 ], minY = rectangles [0 ][1 ];
5
8
int maxX = rectangles [0 ][2 ], maxY = rectangles [0 ][3 ];
6
- Map <Pair , Integer > cnt = new HashMap <>();
9
+ Map <String , Integer > cnt = new HashMap <>();
7
10
8
11
for (int [] r : rectangles ) {
9
12
area += (r [2 ] - r [0 ]) * (r [3 ] - r [1 ]);
@@ -13,52 +16,35 @@ public boolean isRectangleCover(int[][] rectangles) {
13
16
maxX = Math .max (maxX , r [2 ]);
14
17
maxY = Math .max (maxY , r [3 ]);
15
18
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
+ }
20
29
}
21
30
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 ) {
27
36
return false ;
28
37
}
29
38
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 );
41
43
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 ;
45
46
}
46
47
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 ;
63
49
}
64
- }
50
+ }
0 commit comments