LeetCode 836. 矩形重叠

这篇博客探讨了解决LeetCode 836问题的思路,初始尝试通过判断矩阵顶点是否包含失败,转而考虑通过边的交集来确定矩形是否重叠。作者提出反向思考,验证两个矩形是否不相交,只需检查一个矩形是否位于另一个的四周。最终实现了一个简洁的解决方案。

今天的签到题,却也不是一下子就能解决的,还真是让我绕了许多弯。

看到题时的想法是检验矩阵中是否包含另一个矩阵的顶点,若包含则判定重叠。但是这样的判断需要对八个点分别进行,于是开开心心砸完一吨代码。刚准备上手跑,想到了一个反例,像这样:
在这里插入图片描述
emm。。。光速删代码,重新考虑。


接着想,如果考虑顶点不可取的话,考虑边是否可取呢?即能不能通过判断边是否与矩形有交集来判断矩形相较呢?
嗯,有些道理。
然后刚准备一顿推,想到又是八条边的判断,我重新思考了一下,如果逆向思考会如何呢?即考虑两个矩形是否不想交。这个命题的验证似乎就变得很简单了,因为相交时,一条边同另一个矩阵的两条对边的关系可以有很多种,可是它的否定就只有一种情况,最终只需要考虑一个矩阵是否在另一个矩阵的四周即可。

例如矩形A在B的右边,那么A的左侧的边应该在B右侧边的右边。有点绕,但是不难理解。

又由于这种四周的概念是相对的,那么只需要列举上下左右四种情况即可。

代码:

class Solution {
   
   
    public boolean isRectangleOverlap(int
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值