Leetcode 57 插入区间模拟题目

 

这是一个典型的模拟题目,区间可以分成三部分

 

有交集的部分需要处理合成一个区间,这里边界条件比较多。写的时候需要特别小心

class Solution {
public:
    vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
        vector<vector<int>> res;
        int n = intervals.size();
        int i = 0;
        
        while(i<n&&intervals[i][1]<newInterval[0]) res.push_back(intervals[i++]);   // 处理开头没有相交
        if(i==n){
            res.push_back(newInterval);
            return res;
        }
        
        int left = min(intervals[i][0],newInterval[0]);
        while(i<n&&intervals[i][1]<newInterval[1]) i++;                              // 处理相交部分,相交部分合成一个
        if(i<n&&newInterval[1]>=intervals[i][0]) res.push_back({left,intervals[i++][1]}); 
        else res.push_back({left,newInterval[1]});

        while(i<n) res.push_back(intervals[i++]);                                     // 处理后面没有相交
        
        return res;

    }
};

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章