题目描述
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 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.
使用矩形的左下以及右上顶点的坐标表示一个矩形,给定两个矩形,判断两个矩形是否有重叠的部分。
思路是分配判断x方向线段和y方向的线段是否有重合,如果都有重合则认为两个矩形是有重合的。
C++实现
class Solution {
public:
bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) {
const auto is_overlap =
[](const int start1, const int start2, const int end1, const int end2)
{
return max(start1, start2) < min(end1,end2);
};
const bool row_overlap = is_overlap(rec1[0], rec2[0], rec1[2], rec2[2]);
const bool col_overlap = is_overlap(rec1[1], rec2[1], rec1[3], rec2[3]);
return row_overlap && col_overlap;
}
};