LeetCode 836[矩形重叠]

题目

链接

LeetCode 836[矩形重叠]

详情

实例

提示

题解

思路

无重叠的四种情况:

  1. 第二个矩形的右边边如果在第一个矩形的左边边的左边或重叠
  2. 第二个矩形的左边边如果在第一个矩形的右边边的右边或重叠
  3. 第二个矩形的上边边如果在第一个矩形的下边边的下边或重叠
  4. 第二个矩形的下边边如果在第一个矩形的上边边的上边或重叠

 

第一个矩形:取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;
    }
};
posted @ 2024-11-12 17:32  EricsT  阅读(15)  评论(0编辑  收藏  举报