华为题:合并区间

给定一个区间数组 intervals,其中 intervals[i] = [start_i, end_i],请合并所有重叠的区间,并输出合并后的区间。

输入描述

第一行输入一个整数 n,表示区间数量。

接下来 n 行,每行输入两个整数 start 和 end。

输出描述

输出合并后的区间,每行一个区间,按起始位置从小到大排列。

示例 1

输入

text

复制代码
4
1 3
2 6
8 10
15 18

输出

text

复制代码
1 6
8 10
15 18

C++ 解法

cpp

复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n;
    cin >> n;

    vector<pair<int,int>> intervals(n);
    for (int i = 0; i < n; i++) {
        cin >> intervals[i].first >> intervals[i].second;
    }

    sort(intervals.begin(), intervals.end());

    vector<pair<int,int>> ans;

    for (auto& p : intervals) {
        if (ans.empty() || ans.back().second < p.first) {
            ans.push_back(p);
        } else {
            ans.back().second = max(ans.back().second, p.second);
        }
    }

    for (auto& p : ans) {
        cout << p.first << " " << p.second << endl;
    }

    return 0;
}
相关推荐
悠仁さん1 天前
【C++】AVL 树
c++
wuminyu1 天前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
小徐不徐说1 天前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
ZhengEnCi1 天前
模型训练完整流程:从数据准备到模型上线的 10 个关键步骤(全文可跑)
后端·算法
ragnwang1 天前
Notes: Python pybind11 import C++ module
开发语言·c++·python
充值内卷1 天前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++
吞下星星的少年·-·1 天前
Div.3 CF 1131A题(排序,模拟)
算法·模拟·排序
aichitang20241 天前
代数拓扑学与现代前沿视角
考研·算法·数学建模·ai·拓扑学·高考
樱花树下的数学喵1 天前
手写简易 STL string|C++ 字符串底层实现
开发语言·c++