|
56 | 56 | Return false. Because two of the rectangles overlap with each other.
|
57 | 57 | */
|
58 | 58 | public class _391 {
|
59 |
| - /**reference: https://discuss.leetcode.com/topic/56052/really-easy-understanding-solution-o-n-java*/ |
60 |
| - public boolean isRectangleCover(int[][] rectangles) { |
61 |
| - if (rectangles.length == 0 || rectangles[0].length == 0) { |
62 |
| - return false; |
63 |
| - } |
64 |
| - |
65 |
| - int x1 = Integer.MAX_VALUE; |
66 |
| - int x2 = Integer.MIN_VALUE; |
67 |
| - int y1 = Integer.MAX_VALUE; |
68 |
| - int y2 = Integer.MIN_VALUE; |
69 |
| - |
70 |
| - Set<String> set = new HashSet<>(); |
71 |
| - int area = 0; |
72 |
| - |
73 |
| - for (int[] rect : rectangles) { |
74 |
| - x1 = Math.min(rect[0], x1); |
75 |
| - y1 = Math.min(rect[1], y1); |
76 |
| - x2 = Math.max(rect[2], x2); |
77 |
| - y2 = Math.max(rect[3], y2); |
78 |
| - |
79 |
| - area += (rect[2] - rect[0]) * (rect[3] - rect[1]); |
80 |
| - |
81 |
| - String s1 = rect[0] + " " + rect[1]; |
82 |
| - String s2 = rect[0] + " " + rect[3]; |
83 |
| - String s3 = rect[2] + " " + rect[3]; |
84 |
| - String s4 = rect[2] + " " + rect[1]; |
85 |
| - |
86 |
| - if (!set.add(s1)) { |
87 |
| - set.remove(s1); |
88 |
| - } |
89 |
| - if (!set.add(s2)) { |
90 |
| - set.remove(s2); |
| 59 | + public static class Solution1 { |
| 60 | + /** credit: https://discuss.leetcode.com/topic/56052/really-easy-understanding-solution-o-n-java */ |
| 61 | + public boolean isRectangleCover(int[][] rectangles) { |
| 62 | + if (rectangles.length == 0 || rectangles[0].length == 0) { |
| 63 | + return false; |
91 | 64 | }
|
92 |
| - if (!set.add(s3)) { |
93 |
| - set.remove(s3); |
| 65 | + |
| 66 | + int x1 = Integer.MAX_VALUE; |
| 67 | + int x2 = Integer.MIN_VALUE; |
| 68 | + int y1 = Integer.MAX_VALUE; |
| 69 | + int y2 = Integer.MIN_VALUE; |
| 70 | + |
| 71 | + Set<String> set = new HashSet<>(); |
| 72 | + int area = 0; |
| 73 | + |
| 74 | + for (int[] rect : rectangles) { |
| 75 | + x1 = Math.min(rect[0], x1); |
| 76 | + y1 = Math.min(rect[1], y1); |
| 77 | + x2 = Math.max(rect[2], x2); |
| 78 | + y2 = Math.max(rect[3], y2); |
| 79 | + |
| 80 | + area += (rect[2] - rect[0]) * (rect[3] - rect[1]); |
| 81 | + |
| 82 | + String s1 = rect[0] + " " + rect[1]; |
| 83 | + String s2 = rect[0] + " " + rect[3]; |
| 84 | + String s3 = rect[2] + " " + rect[3]; |
| 85 | + String s4 = rect[2] + " " + rect[1]; |
| 86 | + |
| 87 | + if (!set.add(s1)) { |
| 88 | + set.remove(s1); |
| 89 | + } |
| 90 | + if (!set.add(s2)) { |
| 91 | + set.remove(s2); |
| 92 | + } |
| 93 | + if (!set.add(s3)) { |
| 94 | + set.remove(s3); |
| 95 | + } |
| 96 | + if (!set.add(s4)) { |
| 97 | + set.remove(s4); |
| 98 | + } |
94 | 99 | }
|
95 |
| - if (!set.add(s4)) { |
96 |
| - set.remove(s4); |
| 100 | + |
| 101 | + if (!set.contains(x1 + " " + y1) || !set.contains(x1 + " " + y2) || !set.contains( |
| 102 | + x2 + " " + y1) || !set.contains(x2 + " " + y2) || set.size() != 4) { |
| 103 | + return false; |
97 | 104 | }
|
98 |
| - } |
99 | 105 |
|
100 |
| - if (!set.contains(x1 + " " + y1) || !set.contains(x1 + " " + y2) || !set.contains(x2 + " " + y1) || !set.contains(x2 + " " + y2) || set.size() != 4) { |
101 |
| - return false; |
| 106 | + return area == (x2 - x1) * (y2 - y1); |
102 | 107 | }
|
103 |
| - |
104 |
| - return area == (x2 - x1) * (y2 - y1); |
105 | 108 | }
|
106 | 109 | }
|
0 commit comments