LeetCode 热题 HOT 100之合并区间

LeetCode 热题 HOT 100之合并区间


题目56:以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。

方案:模拟这个合并的过程,当合并数组的末尾的第二个值大于等于intervals中下一个数组第一个值时,表示两者有共同区间,则修改合并数组末尾值,如果没有,直接添加intervals中下一个数组。

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        if(intervals.size()==0){
            return {};
        }
        vector<vector<int>>ans;
        sort(intervals.begin(),intervals.end());
        for(int i=0;i<intervals.size();i++){
            int L=intervals[i][0];
            int R=intervals[i][1];
            if(ans.size()==0||ans.back()[1]<L){
                ans.push_back({L,R});
            }
            else{
                ans.back()[1]=max(R,ans.back()[1]);
            }
        }
        return ans;
    }
};

来源:力扣(LeetCode)
载请注明出处。

你可能感兴趣的:(计算机基础,leetcode,算法)