当前位置: 面试刷题>> 矩形重叠 (经典算法题500道)
### 题目描述补充
题目:矩形重叠
给定两个矩形的坐标信息,判断这两个矩形是否重叠。每个矩形由其左下角的点 `(x1, y1)` 和右上角的点 `(x2, y2)` 定义。如果两个矩形有至少一个公共点,则认为它们是重叠的。
### 示例
假设有以下两个矩形:
- 矩形A:左下角 `(1, 1)`,右上角 `(4, 4)`
- 矩形B:左下角 `(3, 3)`,右上角 `(6, 6)`
这两个矩形是重叠的,因为它们有公共区域。
### 解题思路
为了判断两个矩形是否重叠,可以检查一个矩形的右下角是否位于另一个矩形的左上方,或者一个矩形的左下角是否位于另一个矩形的右下方。如果这两种情况中的任何一种成立,则矩形重叠。
### 示例代码
#### PHP 示例
```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 示例
```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 示例
```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) ? "重叠" : "不重叠");
```
码小课网站中有更多相关内容分享给大家学习,包括各种算法的实现和优化技巧,欢迎访问学习。