BM89 合并区间
关于区间问题,这里用到了差分染色的思想,通过标记两个端点标记一段连续的区间,而不是暴力遍历端点中的每个点进行标记。
const int val = 200001 * 2 + 10086;
int inter[val];
class Solution {
public:
vector<Interval> merge(vector<Interval> &intervals) {
vector<Interval> res;
for(auto & interval : intervals){
upadteinter(interval.start * 2, interval.end * 2);
}
//生成结果
int l = -1;
int sum = 0;
for(int i = 0;i < val;i++){
sum+= inter[i];
if(l == -1 && sum > 0){
l = i;
}
if(l != -1 && sum == 0){
res.emplace_back(l/2,(i-1)/2);
l = -1;
sum = 0;
}
}
return res;
}
void upadteinter(int l, int r){
inter[l]++;
inter[r+1]--;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)