糖逗 发表于 2020-4-16 14:28:33

C++刷leetcode(56. 合并区间)

本帖最后由 糖逗 于 2020-4-16 15:25 编辑

题目描述:
给出一个区间的集合,请合并所有重叠的区间。

示例 1:

输入: [,,,]
输出: [,,]
解释: 区间 和 重叠, 将它们合并为 .
示例 2:

输入: [,]
输出: []
解释: 区间 和 可被视为重叠区间。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-intervals
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。




#include <string>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;


vector<vector<int>> solution(vector<vector<int>>& input) {
    vector<vector<int> > res;
    int len = input.size();
    if(len == 0 || len == 1) return input;
    sort(input.begin(), input.end());
    int left = input, right = input;

    for(int i = 1; i < len; i++){
      if(input >= left && input<= right || input == left){
            right = max(input, right);
            if(!res.empty()) res.pop_back();
            res.push_back({left, right});
      }
      else{
            if(i == 1){
                res.push_back(input);
            }
            res.push_back(input);
            right = input;
            left = input;

      }
    }
    return res;
   
}


int main(void){
        int row;
        cin >> row;
        cin.clear();
        vector<vector<int> > input;
        int number;
        input.resize(row);
        for(int i = 0; i < row; i++){
                for(int j = 0 ; j < 2; j++){
                        cin >> number;
                        input.push_back(number);
                }
        }
       
        vector<vector<int> > res= solution(input);
        for(int i = 0; i < res.size(); i++){
                for(int j = 0; j < res.size(); j++){
                        cout << res << " ";
                }
                cout << endl;
        }

        return 0;
}



注意事项:
1.sort排序。
页: [1]
查看完整版本: C++刷leetcode(56. 合并区间)