【LeetCode】56.merge-intervals
题目地址
https://leetcode.com/problems/merge-intervals/
题目大意
https://leetcode-cn.com/problems/merge-intervals/
解题思路
遍历internals, 对每个internal, 与当前已经merge完成的片段作比较,同时维护一个新的片段集合存储本次internal干预后的片段结果,两个internal之间有以下5种情况:
最后用本次merge结果更新。
C++代码
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>> result;
for (vector<int> interval: intervals) {
vector<vector<int>> tempRet;
for (int i = 0; i < result.size(); i++) {
if (interval[0] <= result[i][0] && result[i][0] <= interval[1] && result[i][1] >= interval[1]) {
interval[1] = result[i][1];
continue;
}
if (interval[0] <= result[i][1] && result[i][1] <= interval[1] && result[i][0] <= interval[0]){
interval[0] = result[i][0];
continue;
}
if (interval[1] <= result[i][1] && result[i][0] <= interval[0]) {
interval[0] = result[i][0];
interval[1] = result[i][1];
continue;
}
if (interval[0] <= result[i][0] && result[i][1] <= interval[1]) {
continue;
}
tempRet.push_back(result[i]);
}
tempRet.push_back(interval);
result = tempRet;
}
return result;
}
};