【區間類問題】2.插入區間

57. 插入區間

給出一個無重疊的 ,按照區間起始端點排序的區間列表。

在列表中插入一個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。

class Solution {
public:
    vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
        vector<vector<int>> ans;
        int length = intervals.size();
        vector<int> s;
        
        if(length==0) {ans.push_back(newInterval);return ans;}

        vector<vector<int>>::iterator iter;
        int i;
        for(i =0, iter = intervals.begin();i<intervals.size();i++,iter++){
            if(intervals[i][0]>newInterval[0]){
                intervals.insert(iter,newInterval);
                break;
            } 
            
        }
        if(intervals.size()==length){ intervals.push_back(newInterval);}

        
       // 上一題的合併
       // 排序之後一定是連續的幾個合併交集,不可能跨越合併
        int j ;
        for(int i = 0;i<intervals.size();i++){
               int  left = intervals[i][0];
               int  right = intervals[i][1];
            for(j =i+1;j<intervals.size()&&intervals[j][0]<=right;j++){
                right = right>intervals[j][1]?right:intervals[j][1];}
            i=j-1;
            s.push_back(left);
            s.push_back(right);
            ans.push_back(s);
            s.clear();
        }
                
        return ans;
        

    }
};

 

發佈了188 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章