【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;
    }
};
posted @ 2020-02-14 22:59  南岛的森林  阅读(111)  评论(0编辑  收藏  举报