鱼C论坛

 找回密码
 立即注册
查看: 1043|回复: 0

[技术交流] C++刷leetcode(56. 合并区间)

[复制链接]
发表于 2020-4-16 14:28:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

示例 1:

输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:

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

来源:力扣(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[0][0], right = input[0][1];

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

        }
    }
    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[i].push_back(number);
                }
        }
        
        vector<vector<int> > res  = solution(input); 
        for(int i = 0; i < res.size(); i++){
                for(int j = 0; j < res[0].size(); j++){
                        cout << res[i][j] << " "; 
                }
                cout << endl;
        } 

        return 0;
}



注意事项:
1.sort排序。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 06:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表