-
Notifications
You must be signed in to change notification settings - Fork 117
Expand file tree
/
Copy pathRectangleOverlap863.java
More file actions
41 lines (36 loc) · 1.32 KB
/
RectangleOverlap863.java
File metadata and controls
41 lines (36 loc) · 1.32 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
* A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are
* the coordinates of its bottom-left corner, and (x2, y2) are the coordinates
* of its top-right corner.
*
* Two rectangles overlap if the area of their intersection is positive. To be
* clear, two rectangles that only touch at the corner or edges do not overlap.
*
* Given two (axis-aligned) rectangles, return whether they overlap.
*
* Example 1:
* Input: rec1 = [0,0,2,2], rec2 = [1,1,3,3]
* Output: true
*
* Example 2:
* Input: rec1 = [0,0,1,1], rec2 = [1,0,2,1]
* Output: false
*
* Notes:
* Both rectangles rec1 and rec2 are lists of 4 integers.
* All coordinates in rectangles will be between -10^9 and 10^9.
*/
public class RectangleOverlap863 {
public boolean isRectangleOverlap(int[] rec1, int[] rec2) {
return isIntervalOverlap(rec1[0], rec1[2], rec2[0], rec2[2]) && isIntervalOverlap(rec1[1], rec1[3], rec2[1], rec2[3]);
}
private boolean isIntervalOverlap(int a1, int a2, int b1, int b2) {
return !(a2 <= b1 || b2 <= a1);
}
public boolean isRectangleOverlap2(int[] rec1, int[] rec2) {
return !(rec1[2] <= rec2[0] || // left
rec1[3] <= rec2[1] || // bottom
rec1[0] >= rec2[2] || // right
rec1[1] >= rec2[3]); // top
}
}