# 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`.

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

```cpp
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];
}
```
