当前位置: 面试刷题>> 矩形重叠 (经典算法题500道)


题目描述补充

题目:矩形重叠

给定两个矩形的坐标信息,判断这两个矩形是否重叠。每个矩形由其左下角的点 (x1, y1) 和右上角的点 (x2, y2) 定义。如果两个矩形有至少一个公共点,则认为它们是重叠的。

示例

假设有以下两个矩形:

  • 矩形A:左下角 (1, 1),右上角 (4, 4)
  • 矩形B:左下角 (3, 3),右上角 (6, 6)

这两个矩形是重叠的,因为它们有公共区域。

解题思路

为了判断两个矩形是否重叠,可以检查一个矩形的右下角是否位于另一个矩形的左上方,或者一个矩形的左下角是否位于另一个矩形的右下方。如果这两种情况中的任何一种成立,则矩形重叠。

示例代码

PHP 示例

function isRectangleOverlap($rec1, $rec2) {
    list($x1, $y1, $x2, $y2) = $rec1;
    list($a, $b, $c, $d) = $rec2;

    // 检查一个矩形的右下角是否在另一个矩形的左上方
    if ($x2 > $a && $y1 < $d) {
        return true;
    }

    // 检查一个矩形的左下角是否在另一个矩形的右下方
    if ($x1 < $c && $y2 > $b) {
        return true;
    }

    return false;
}

// 测试示例
$rec1 = [1, 1, 4, 4];
$rec2 = [3, 3, 6, 6];
echo isRectangleOverlap($rec1, $rec2) ? "重叠" : "不重叠";

Python 示例

def isRectangleOverlap(rec1, rec2):
    x1, y1, x2, y2 = rec1
    a, b, c, d = rec2

    # 检查一个矩形的右下角是否在另一个矩形的左上方
    if x2 > a and y1 < d:
        return True

    # 检查一个矩形的左下角是否在另一个矩形的右下方
    if x1 < c and y2 > b:
        return True

    return False

# 测试示例
rec1 = [1, 1, 4, 4]
rec2 = [3, 3, 6, 6]
print("重叠" if isRectangleOverlap(rec1, rec2) else "不重叠")

JavaScript 示例

function isRectangleOverlap(rec1, rec2) {
    const [x1, y1, x2, y2] = rec1;
    const [a, b, c, d] = rec2;

    // 检查一个矩形的右下角是否在另一个矩形的左上方
    if (x2 > a && y1 < d) {
        return true;
    }

    // 检查一个矩形的左下角是否在另一个矩形的右下方
    if (x1 < c && y2 > b) {
        return true;
    }

    return false;
}

// 测试示例
const rec1 = [1, 1, 4, 4];
const rec2 = [3, 3, 6, 6];
console.log(isRectangleOverlap(rec1, rec2) ? "重叠" : "不重叠");

码小课网站中有更多相关内容分享给大家学习,包括各种算法的实现和优化技巧,欢迎访问学习。

推荐面试题