leetcode836

//分类讨论 思路有点麻烦 该题目也给出了如果对于无序点解体的思路 即按照左下到右上的思路处理
//1.首先确定一个矩形
//2.然后根据第二个矩形的左下角的横坐标移动 来分成三类 : i. 区间右侧 ii.区间中间 iii.区间左侧
//3.针对i 容易看到可以直接返回
//4.针对ii 讨论不重叠时纵坐标的取值 其余均重叠
//5.针对iii情况相对复杂 这里两种情况与ii相同,还有一种情况是第二个矩形的max_x小于第一个矩形的min_x
class Solution {
public:
    bool isRectangleOverlap(vector<int>& rec1, vector<int>& rec2) {
        
        int cnt = 0;
        int x1 = rec1[0];
        int x2 = rec1[2];
        
        int y1 = rec1[1];
        int y2 = rec1[3];
        
        if(rec2[0] >= x2) 
             return false;
        else if(rec2[0] < x1){
             if(rec2[2] > x1 ){
                  if(rec2[3] <= y1)      return false;
                  else if(rec2[1] >= y2) return false;
                  else                   return true;
             }
             else                        return false;
        }
        
        else{
            if(rec2[3] <= y1)           return false;
            else if(rec2[1] >= y2)      return false;
            else                        return true;
        }
            
            
    }
};

 

posted on 2019-09-22 15:27  在苏州的城边  阅读(238)  评论(0编辑  收藏  举报

导航