重叠矩形编程怎么编

时间:2025-02-28 03:14:30 明星趣事

要判断两个矩形是否重叠,可以使用以下两种方法:

方法一:位置法

矩形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& rec1, vector& rec2) {

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& rec1, vector& rec2) {

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

这两种方法都可以有效地判断两个矩形是否重叠。根据具体需求和代码简洁性,可以选择其中一种方法实现。