836. Rectangle Overlap

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:

  1. Both rectangles rec1 and rec2 are lists of 4 integers.

  2. All coordinates in rectangles will be between -10^9 and 10^9.

畫個圖從1D的兩條線斷重疊比較到2D的兩個長方形重疊比較。可以畫出四種不同的情況,1和2重疊在左上、右上、左下、右下。畫出來之後發現滿足條件的情形全部一樣,所以最後程式碼只需要一行。

bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) { // time: O(1); space: O(1)
    // x1 < x4 && x3 < x2 && y1 < y4 && y3 < y2
    return rec1[0] < rec2[2] && rec2[0] < rec1[2] && rec1[1] < rec2[3] && rec2[1] < rec1[3];
}

Last updated

Was this helpful?