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.
Solution:
If two rectangles do not have overlap, given the first rectangle, the second rectangle could be only in these four positions:
1. above the first rectangle (rec2[0] >= rec1[2])
2. below the first rectangle (rec2[2] <= rec1[0])
3. right to the first rectangle (rec2[1] >= rec1[3])
4. left to the first rectangle (rec2[3] <= rec1[1])
Code:
class Solution { public boolean isRectangleOverlap(int[] rec1, int[] rec2) { return !(rec2[3] <= rec1[1] || rec2[1] >= rec1[3] || rec2[2] <= rec1[0] || rec2[0] >= rec1[2]); } }