要判断两个矩形是否重叠,可以使用以下两种方法:
方法一:位置法
矩形1在矩形2的上方:
矩形1的y1坐标大于矩形2的y2坐标。
矩形1在矩形2的下方:
矩形1的y1坐标小于矩形2的y2坐标。
矩形1在矩形2的左方:
矩形1的x1坐标大于矩形2的x2坐标。
矩形1在矩形2的右方:
矩形1的x1坐标小于矩形2的x2坐标。
除了以上四种情况,其他情况都是重叠的。
```cpp
class Solution {
public:
bool isRectangleOverlap(vector return !(rec1 <= rec2 || // right rec1 >= rec2); // top } }; ``` 方法二:区域法 min(rec1, rec2) > max(rec1, rec2) min(rec1, rec2) > max(rec1, rec2) width > 0, height > 0 ```cpp class Solution { public: bool isRectangleOverlap(vector return (min(rec1, rec2) > max(rec1, rec2) && min(rec1, rec2) > max(rec1, rec2)); } }; ``` 示例 1. 输入: rec1 = [0,0,2,2], rec2 = [1,1,3,3] 输出: true 2. 输入: rec1 = [0,0,1,1], rec2 = [1,0,2,1] 输出: false 这两种方法都可以有效地判断两个矩形是否重叠。根据具体需求和代码简洁性,可以选择其中一种方法实现。重叠部分的宽度:
重叠部分的高度:
宽度和高度都必须是正数: