首页 > 其他分享 >BM89 合并区间

BM89 合并区间

时间:2023-02-19 18:22:22浏览次数:34  
标签:val int res sum interval 合并 BM89 区间 inter

关于区间问题,这里用到了差分染色的思想,通过标记两个端点标记一段连续的区间,而不是暴力遍历端点中的每个点进行标记。  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]--;     } };

标签:val,int,res,sum,interval,合并,BM89,区间,inter
From: https://www.cnblogs.com/starter-songudi/p/17135272.html

相关文章