LeetCode 836[矩形重疊]

EricsT發表於2024-11-12

題目

連結

LeetCode 836[矩形重疊]

詳情

LeetCode 836[矩形重疊]

例項

LeetCode 836[矩形重疊]

提示

LeetCode 836[矩形重疊]

題解

思路

無重疊的四種情況:

  1. 第二個矩形的右邊邊如果在第一個矩形的左邊邊的左邊或重疊
  2. 第二個矩形的左邊邊如果在第一個矩形的右邊邊的右邊或重疊
  3. 第二個矩形的上邊邊如果在第一個矩形的下邊邊的下邊或重疊
  4. 第二個矩形的下邊邊如果在第一個矩形的上邊邊的上邊或重疊

第一個矩形:取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;
    }
};

相關文章