leetcode-56. 合并区间

 

leetcode-56. 合并区间

算法解析:

 leetcode-56. 合并区间

 

class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
        // 此题最关键的就是排序,如果不排序很难处理
        sort(intervals.begin(), intervals.end());  // 按照左端点从小到大排序
        vector<vector<int>> res;
        int len = intervals.size();
        for(int i = 0; i < len; i++){
            int L = intervals[i][0];
            int R = intervals[i][1];
            // 如果res中没有区间,或者当前区间的左端点比res中最后一个区间右端点大,
            // 说明当前区间不在res目前区间里面,则添加新区间到res中。
            if(res.size()==0||res[res.size()-1][1]<L){
                res.push_back({L,R});  // 直接添加一维数组的办法
            }else{
                // 因为当前区间在res的最后一个区间里面,所以需要更新res中最后一个区间的右端点
                // 比较右端点的长度,
                res[res.size()-1][1] = max(res[res.size()-1][1],R);  
            }
                
        }
        return res;
    }
};

 

上一篇:LeetCode合并区间


下一篇:【LeetCode】贪心算法:常见典例