0
点赞
收藏
分享

微信扫一扫

LeetCode 836. 矩形重叠

天悦哥 2022-02-11 阅读 51
//检查矩形位置是否重叠
class Solution
{
public:
    bool isRectangleOverlap(vector<int> &rec1, vector<int> &rec2)
    {
        //如果有一个矩形的面积为0,则一定没有重叠的区域
        if (rec1[0] == rec1[2] || rec1[1] == rec1[3] || rec2[0] == rec2[2] || rec2[1] == rec2[3])
        {
            return false;
        }
        //当两个矩形的面积均大于0时,矩形1必须出现在矩形2的四周才没有重叠的区域
        return !(rec1[2] <= rec2[0] || // 矩形 rec1 在矩形 rec2 的左侧
                 rec1[3] <= rec2[1] || // 矩形 rec1 在矩形 rec2 的下方
                 rec1[0] >= rec2[2] || // 矩形 rec1 在矩形 rec2 的右侧
                 rec1[1] >= rec2[3]);  // 矩形 rec1 在矩形 rec2 的上方
    }
};
//检查投影线段是否有交集
class Solution
{
public:
    bool isRectangleOverlap(vector<int> &rec1, vector<int> &rec2)
    {
        return (min(rec1[2], rec2[2]) > max(rec1[0], rec2[0]) &&
                min(rec1[3], rec2[3]) > max(rec1[1], rec2[1]));
    }
};
举报

相关推荐

0 条评论