区间相交、矩形相交判断总结

在写代码的时候经常会遇到判断两个区间是否相交,矩形是否相交

先看两个区间相交的处理,有以下四种场景:

 最直白的代码判断:

两个区间相交

第一种写法:包含四种场景

(maxA<=maxB && maxA>=minB) || (minA>=minB && minA<=maxB) || (minA>=minB && maxA<=maxB) || (minB>=minA && maxB<=maxA)

复杂度是4,容易写错

第二种写法:包含四种场景(推荐写法)

max(minA, minB) <= min(maxA, maxB)

复杂度 1

 区间不相交

!(max(minA, minB) <= min(maxA, maxB))

判断两个矩形相交

要想直接判断矩形是否相交,可以参考两个区间是否相交进行判断,判断矩形相交可以转化为判断两个区间相交的问题,分两步来看,

  1. 先看 y 轴方向,矩形1 y 轴方向区间 y1,y2;矩形2的 y 轴方向区间 y3,y4 
  2. 再看 x 轴方向,矩形1 x 轴方向区间 x1,x2;矩形2的 x 轴方向区间 x3,x4

如果两个矩形相交,那么x,y方向的区间同时满足相交才能否合要求 

所以根据区间相交规则如下:

max(y1, y3) <= min(y2, y4) && max(x1, x3) <= min(x2, x4)

那么矩形不相交就很容易推导,取反就行

!(max(y1, y3) <= min(y2, y4) && max(x1, x3) <= min(x2, x4)) 

练习题: 参考leetcode 836. 矩形重叠 . - 力扣(LeetCode)

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值