题目描述补充
题目:矩形重叠
给定两个矩形的坐标信息,判断这两个矩形是否重叠。每个矩形由其左下角的点 (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) ? "重叠" : "不重叠");
码小课网站中有更多相关内容分享给大家学习,包括各种算法的实现和优化技巧,欢迎访问学习。