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;

    }
};

 

 

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