56. 合并区间
1.题目介绍
以数组
示例 1:
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:
输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。
提示:
2.题解
2.1 排序
思路
这里C++的sort函数可以将二维数组中的一维数组按其第一个数字大小排列。
接下来只要考虑如何合并数组的问题,由于左区间已经排列完毕,左边的数组左区间肯定是小于等于右边的数组左区间的
也就是说只要判断新来的区间的左区间是否小于等于旧数组的右区间,若是有重合,则合并,反之插入ans二维数组,进行下一次判断
代码
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
if (intervals.empty()) return {};
vector<vector<int>> ans;
sort(intervals.begin(), intervals.end());
for (int i = 0; i < intervals.size(); i++){
int L = intervals[i][0], R = intervals[i][1];
if (!ans.empty() && ans.back()[1] >= L) ans.back()[1] = max(ans.back()[1],R);
else ans.push_back(intervals[i]);
}
return ans;
}
};
分类:
力扣
, 数据结构与算法 / 数组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了