leetcode矩形重叠

1.位置法

矩形1不和矩形2重叠只有四种情况,矩形1在矩形2的上方,下方,左方、右方

除此之外的情况,都是重叠。

代码如下:

class Solution {
public:
    bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) {
        return !(rec1[2] <= rec2[0] ||   // left
                 rec1[3] <= rec2[1] ||   // bottom
                 rec1[0] >= rec2[2] ||   // right
                 rec1[1] >= rec2[3]);    // top
    }
};

2.区域法

设重叠部分的矩形区域长度和宽度分别是width,height,只有两个都是正数才重叠

则当min(rec1[2],rec2[2])>max(rec1[0],rec2[0]),width>0

当min(rec1[3],rec2[3])>max(rec1[1],rec2[1]),height>0

代码如下:

class Solution {
public:
    bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) {
        return (min(rec1[2], rec2[2]) > max(rec1[0], rec2[0]) && // width > 0
                min(rec1[3], rec2[3]) > max(rec1[1], rec2[1]));  // height > 0
    }
};
发布了191 篇原创文章 · 获赞 3 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38196982/article/details/104799853