LeetCode 836. 矩形重叠(判断两个矩形是否相交)

题意:
矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。
矩形的上下边平行于 x 轴,左右边平行于 y 轴。

如果相交的面积为 正 ,则称两矩形重叠。
需要明确的是,只在角或边接触的两个矩形不构成重叠。

给出两个矩形 rec1 和 rec2 。如果它们重叠,返回 true;否则,返回 false 。

数据范围:
rect1.length == 4
rect2.length == 4
-1e9 <= rec1[i], rec2[i] <= 1e9
rec1[0] <= rec1[2] 且 rec1[1] <= rec1[3]
rec2[0] <= rec2[2] 且 rec2[1] <= rec2[3]
解法:
如果其中一个矩形面积为0,那么return 0.

如果两个矩形有交集,那么在x轴上和y轴上的投影也都会有交集.
只需要判断投影是否都有交集即可.
code:
class Solution {
public:
    bool isRectangleOverlap(vector<int>& a, vector<int>& b) {
        if(a[0]==a[2]||a[1]==a[3]||b[0]==b[2]||b[1]==b[3])return 0;//其中一个矩形面积为0的情况.
        if(a[2]<=b[0]||a[0]>=b[2])return 0;
        if(a[3]<=b[1]||a[1]>=b[3])return 0;
        return 1;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值