題目
連結
LeetCode 836[矩形重疊]
詳情
例項
提示
題解
思路
無重疊的四種情況:
- 第二個矩形的右邊邊如果在第一個矩形的左邊邊的左邊或重疊
- 第二個矩形的左邊邊如果在第一個矩形的右邊邊的右邊或重疊
- 第二個矩形的上邊邊如果在第一個矩形的下邊邊的下邊或重疊
- 第二個矩形的下邊邊如果在第一個矩形的上邊邊的上邊或重疊
第一個矩形:取x1,y1為左下角座標,x2,y2為右上角座標,分別對應vector容器rec1的第0,1,2,3個元素
第二個矩形:取x1_,y1_為左下角座標,x2_,y2_為右上角座標,分別對應vector容器rec2的第0,1,2,3個元素
當 x2_ <= x1 時,即第二個矩形的右邊邊在第一個矩形的左邊邊的左邊或重疊
當 x1_ >= x2 時,即第二個矩形的左邊邊在第一個矩形的右邊邊的右邊或重疊
當 y2_ <= y1 時,即第二個矩形的上邊邊在第一個矩形的下邊邊的下邊或重疊
當 y1_ >= y2 時,即第二個矩形的下邊邊在第一個矩形的上邊邊的上邊或重疊
以上返回 false
否則返回 true
程式碼
class Solution {
public:
bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) {
int x1 = rec1.at(0);
int y1 = rec1.at(1);
int x2 = rec1.at(2);
int y2 = rec1.at(3);
int x1_ = rec2.at(0);
int y1_ = rec2.at(1);
int x2_ = rec2.at(2);
int y2_ = rec2.at(3);
if (x2_ <= x1)
return false;
if (y2_ <= y1)
return false;
if (x1_ >= x2)
return false;
if (y1_ >= y2)
return false;
return true;
}
};