python-leetcode-836. 矩形重叠

836. 矩形重叠 - 力扣(LeetCode)

可以通过检查两个矩形的投影区间是否有重叠来判断它们是否相交。具体来说:

  • 矩形 rec1 = [x1, y1, x2, y2]

  • 矩形 rec2 = [a1, b1, a2, b2]

它们在 x 轴上重叠的条件是:

\max(x1, a1) < \min(x2, a2)

它们在 y 轴上重叠的条件是:

\max(y1, b1) < \min(y2, b2)

只有当上述两个条件都满足时,矩形才重叠。

Python 代码:

def isRectangleOverlap(rec1, rec2):
    return (max(rec1[0], rec2[0]) < min(rec1[2], rec2[2]) and
            max(rec1[1], rec2[1]) < min(rec1[3], rec2[3]))

# 测试
print(isRectangleOverlap([0, 0, 2, 2], [1, 1, 3, 3]))  # True
print(isRectangleOverlap([0, 0, 1, 1], [1, 1, 2, 2]))  # False

解释:

  1. 第一个测试用例

    • max(0,1) = 1min(2,3) = 2,满足 1 < 2

    • max(0,1) = 1min(2,3) = 2,满足 1 < 2

    • 矩形重叠,返回 True

  2. 第二个测试用例

    • max(0,1) = 1min(1,2) = 11 < 1 不成立

    • 矩形仅在边界接触,不算重叠,返回 False

这样,我们就可以高效地判断两个矩形是否重叠了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值