leetcode 56 Merge Intervals
https://leetcode.com/problems/merge-intervals/
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> result;
int n = intervals.size();
if(n<=1) return intervals;
result.push_back(intervals[0]);
int i = 1;
for(i=1;i<n;i++){
result = insert(result, intervals[i]);
}
return result;
}
vector<vector<int>> insert(vector<vector<int>>& set, vector<int> single){
int i=0;
int n=set.size();
vector<vector<int>> result;
while(i<n && set[i][1]<single[0] ){//無交集
result.push_back(set[i]);
i++;
}
while(i<n && set[i][0] <=single[1]){//有交集 到此,說明set[i][1]>= single[0],只要set[i][0] <=single[1]就能保證有交集
int l = min(set[i][0], single[0]);
int r = max(set[i][1], single[1]);
single[0]= l;
single[1]= r;
i++;
}
result.push_back(single);
while(i<n){
result.push_back(set[i]);
i++;
}
return result;
}
};
leetcode 57 Insert Interval
https://leetcode.com/problems/insert-interval/
class Solution {
public:
vector<vector<int>> insert(vector<vector<int>>& intervals, vector<int>& newInterval) {
int n = intervals.size();
int i=0;
vector<vector<int>> result;
while(i<n && intervals[i][1]<newInterval[0]){//無交集
result.push_back(intervals[i]);
i++;
}
while(i<n && intervals[i][0] <= newInterval[1]){ //有交集 到此,說明intervals[i][1]>=newInterval[0],只要intervals[i][0] <= newInterval[1]就能保證有交集
newInterval[0] = min(intervals[i][0], newInterval[0]);
newInterval[1] = max(intervals[i][1], newInterval[1]);
i++;
}
result.push_back(newInterval);
while(i<n){
result.push_back(intervals[i]);
i++;
}
return result;
}
};