题目描述
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;
}
};

本文介绍了一种判断两个矩形是否重叠的算法。通过比较矩形在x轴和y轴上的投影来确定是否存在交集。适用于坐标范围在-10^9到10^9之间的场景。

1245

被折叠的 条评论
为什么被折叠?



