双指针 力扣 56. 合并区间
56. 合并区间
给出一个区间的集合,请合并所有重叠的区间。
示例 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] 可被视为重叠区间。
思路:
将二维数组按第一个值排序,用左指针指向区间开始,x表示区间连续的范围,右指针指向下一个区间的开始,若比 x 小则可以合并,若比 x 大则断开区间,并移动左指针跳过已经合并的区间
代码
class Solution {
public:
vector<vector<int>> merge(vector<vector<int>>& intervals) {
vector<vector<int>>a;
int s=intervals.size();
sort(intervals.begin(),intervals.end());
for(int i = 0; i < s;)
{
int x=intervals[i][1];
int h=i+1;
while(h < s && intervals[h][0] <= x )//顺序不能变!!
{
x=max(x,intervals[h][1]);
h++;
}
a.push_back({intervals[i][0],x});
i=h;
}
return a;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效