
3种解法 - 判断矩形重叠
发布日期:2021-05-08 16:54:46
浏览次数:21
分类:精选文章
本文共 1337 字,大约阅读时间需要 4 分钟。
要判断两个矩形是否重叠,可以通过检查它们在X轴和Y轴方向上的边界是否有重叠区域。具体来说,两个矩形在X轴和Y轴方向上都必须有重叠,才能保证它们在平面上有交集。
步骤解析
提取矩形坐标:每个矩形由四个整数构成,分别表示左下角和右上角的坐标。设第一个矩形为 rec1 = [x1, y1, x2, y2]
,第二个矩形为 rec2 = [x1', y1', x2', y2']
。
检查X轴方向的重叠:
- 计算两个矩形左边界的最大值
max_x_left = max(rec1[0], rec2[0])
。 - 计算两个矩形右边界的最小值
min_x_right = min(rec1[2], rec2[2])
。 - 如果
max_x_left >= min_x_right
,则在X轴方向上没有重叠,矩形不重叠。
检查Y轴方向的重叠:
- 计算两个矩形下边界的最大值
max_y_bottom = max(rec1[1], rec2[1])
。 - 计算两个矩形上边界的最小值
min_y_top = min(rec1[3], rec2[3])
。 - 如果
max_y_bottom >= min_y_top
,则在Y轴方向上没有重叠,矩形不重叠。
判断重叠:
- 只有当X轴和Y轴方向都有重叠时,矩形才有交集。因此,必须同时满足
max_x_left < min_x_right
和max_y_bottom < min_y_top
。
代码实现
class Solution: def isRectangleOverlap(self, rec1: List[int], rec2: List[int]) -> bool: # 计算X轴方向的重叠情况 max_x_left = max(rec1[0], rec2[0]) min_x_right = min(rec1[2], rec2[2]) if max_x_left >= min_x_right: return False # 计算Y轴方向的重叠情况 max_y_bottom = max(rec1[1], rec2[1]) min_y_top = min(rec1[3], rec2[3]) if max_y_bottom >= min_y_top: return False return True
代码解释
-
计算X轴方向的重叠:首先计算两个矩形左边界的最大值和右边界的最小值。如果左边界的最大值大于等于右边界的最小值,说明在X轴方向上没有重叠,矩形不重叠,直接返回
False
。 -
计算Y轴方向的重叠:同样地,计算两个矩形下边界的最大值和上边界的最小值。如果下边界的最大值大于等于上边界的最小值,说明在Y轴方向上没有重叠,矩形不重叠,直接返回
False
。 -
判断重叠:只有当X轴和Y轴方向都有重叠时,矩形才有交集,此时返回
True
,否则返回False
。
通过这种方法,可以简便地判断两个矩形是否有重叠,确保代码的效率和准确性。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年05月15日 02时36分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
linux下vi编辑器使用方法
2023-02-02
linux下vi编辑某文件时,操作出现 错误提示: E325: ATTENTION 2, Found a swap file by the name ".p1.c.swp"...
2023-02-02
linux下vsode超级用户运行
2023-02-02
linux下xargs命令用法
2023-02-02
Linux下以C构建WEB服务并响应XHR(XMLHttpRequest)请求
2023-02-02
linux下使用gdb调试程序
2023-02-02