题解 | 合并区间

合并区间

https://www.nowcoder.com/practice/0596b6232ce74b18b60ba0367d7f2492

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

class Solution {
public:
    /*
    int = 整数,比如 5
    vector<int> = 整数数组,比如 [1, 3]
    vector<vector<int>> = 二维数组,比如 [[1,3], [2,6]]
    */
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
    //   返回类型       函数名    参数类型
    if(intervals.size()<=1){
        return intervals;
    }
    
    //默认按照区间的第一个元素(起点) 排序。
    sort(intervals.begin(),intervals.end());
    
    //初始:intervals = [[1,3], [2,6], [8,10]]
    //result = [[1,3]]
    vector<vector<int>> result;
    result.push_back(intervals[0]);

    for(int i = 1;i<intervals.size();i++){
        vector<int> &last = result.back(); //last=[1,3]
        if(intervals[i][0]<=last[1]){
            //intervals[1][0]==2  <=  last[1]==3
            last[1]=max(last[1],intervals[i][1]);
        }
        else{
            result.push_back(intervals[i]); //补后面
        }
    }

    return result;
    }
};

int main(){
    Solution solution;
    vector<vector<int>> sections;
    int a,b;
    char c;
    while(cin>>a>>c>>b){
       sections.push_back({a,b});
    }
    
    vector<vector<int>> merged = solution.merge(sections);
    for(int i=0;i<merged.size();i++){
        cout << merged[i][0]<<","<<merged[i][1]<<" ";
    }

    return 0;

}

全部评论

相关推荐

04-01 16:02
已编辑
武汉工程大学 Java
牛客98843461...:处女面??我还种马面渣男面处男面呢
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务