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_rightmax_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

    通过这种方法,可以简便地判断两个矩形是否有重叠,确保代码的效率和准确性。

    上一篇:3种解法 - 计算最长回文串
    下一篇:3种算法 - 查看拼写单词

    发表评论

    最新留言

    第一次来,支持一个
    [***.219.124.196]2025年05月15日 02时36分02秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章