LeetCode 836[矩形重叠]
题目
链接
详情
实例
提示
题解
思路
无重叠的四种情况:
- 第二个矩形的右边边如果在第一个矩形的左边边的左边或重叠
- 第二个矩形的左边边如果在第一个矩形的右边边的右边或重叠
- 第二个矩形的上边边如果在第一个矩形的下边边的下边或重叠
- 第二个矩形的下边边如果在第一个矩形的上边边的上边或重叠
第一个矩形:取x1,y1为左下角坐标,x2,y2为右上角坐标,分别对应vector容器rec1的第0,1,2,3个元素
第二个矩形:取x1_,y1_为左下角坐标,x2_,y2_为右上角坐标,分别对应vector容器rec2的第0,1,2,3个元素
当 x2_ <= x1 时,即第二个矩形的右边边在第一个矩形的左边边的左边或重叠
当 x1_ >= x2 时,即第二个矩形的左边边在第一个矩形的右边边的右边或重叠
当 y2_ <= y1 时,即第二个矩形的上边边在第一个矩形的下边边的下边或重叠
当 y1_ >= y2 时,即第二个矩形的下边边在第一个矩形的上边边的上边或重叠
以上返回 false
否则返回 true
代码
class Solution {
public:
bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) {
int x1 = rec1.at(0);
int y1 = rec1.at(1);
int x2 = rec1.at(2);
int y2 = rec1.at(3);
int x1_ = rec2.at(0);
int y1_ = rec2.at(1);
int x2_ = rec2.at(2);
int y2_ = rec2.at(3);
if (x2_ <= x1)
return false;
if (y2_ <= y1)
return false;
if (x1_ >= x2)
return false;
if (y1_ >= y2)
return false;
return true;
}
};
本文来自博客园,作者:EricsT,转载请注明原文链接:https://www.cnblogs.com/EricsT/p/18541726