合并区间 ---- 贪心算法

合并区间

分析:

区间问题, 的解决方式:

  1. 排序(可以选择用左端点排序, 或者右端点排序)
  2. 根据排序的结果, 总结规律, 得出解决问题的策略

第一步: 排序

按照左端点排序后, 能够得到的结论:
能够合并的区间, 都是连续的

意思是, 如果两个排序后的相邻的区间12, 不能够进行合并, 那么后面的区间, 都不能和区间1进行合并

第二步: 总结如何合并

排序之后可能会出现的情况

第一个区间:left, right

第二个区间:a, b

有重叠的部分, 一定是满足 a >= left, 合并一定是合并成:left, max(right, b)

没有重叠的部分, 一定满足 a > right, 不能合并区间12, 所以要向后移动, left == a, right == b, 看区间2和后面的区间能否合并

总结: 合并的方法就是求并集

代码:

java 复制代码
public ArrayList<Interval> merge (ArrayList<Interval> intervals) {
        // write code here
        ArrayList<Interval> res = new ArrayList<>();
        if(intervals.size() == 0) return res;
        Collections.sort(intervals, (o1, o2) -> o1.start - o2.start);
        int left = intervals.get(0).start;
        int right = intervals.get(0).end;
        for(int i = 1; i < intervals.size(); i++){
            int a = intervals.get(i).start;
            int b = intervals.get(i).end;
            if(a <= right){
                right = Math.max(right, b);
            }else{
                res.add(new Interval(left, right));
                left = a;
                right = b;
            }
        }
        res.add(new Interval(left, right));
        return res;
    }
相关推荐
Jerry8 小时前
LeetCode 1047. 删除字符串中的所有相邻重复项
算法
可编程芯片开发10 小时前
基于霍尔传感器和PID控制器的有功功率检测控制系统simulink建模与仿真
算法
To_OC11 小时前
LC 17 电话号码的字母组合:我的回溯算法,就是从这道题开窍的
javascript·算法·leetcode
战族狼魂13 小时前
GPT-5.6与Grok 4.5重磅发布
人工智能·算法·大模型·大语言模型
白日焰火114 小时前
基于 OpenSpec 实现规范驱动开发
算法·交互
imuliuliang14 小时前
关于图搜索算法的性能建模与可预测性研究7
算法
ForDreamMusk15 小时前
批量归一化
人工智能·算法·机器学习
Ivanqhz16 小时前
刚体的自由度
人工智能·算法
KaMeidebaby16 小时前
卡梅德生物技术快报|抗体合成:多肽抗体合成工程化方案:Nsp2 保守肽多抗制备与多维度验证
前端·网络·数据库·人工智能·算法
Yang_jie_0317 小时前
笔记:数据结构(栈是否使用底指针以及头指针的初始化值)
数据结构·笔记·算法