贪心算法day9(合并区间)

1.合并区间

56. 合并区间 - 力扣(LeetCode)

对于这种区间问题,我们应该先排序根据排序的结果总结一些规律,进而的得出解决该问题的策略。

复制代码
class Solution {
      public static int[][] merge(int[][] intervals) {
        //第一步进行左端点排序
        Arrays.sort(intervals,(v1,v2)->{
            return v1[0] -v2[0];
        });
        //进行合并
        int left = intervals[0][0],right = intervals[0][1];
        List<int[]> ret = new ArrayList<>();
        for(int i = 1;i < intervals.length;i++){
            int a = intervals[i][0],b = intervals[i][1];
            if(a <= right){

                //left始终是最小的 right要更新为最大的才行
                right = Math.max(right,b);

            }else{
                //把前面的数字合并成一个新的数组 之后更新left right再次进行比较
                ret.add(new int[]{left,right});
                left = a;
                right = b;
            }
        }
        //如果最后一个数组的 a > right 更新 left 和 right 之后就无法再进入循环
        // 如果最后一组要合并的数字 a并没有大于right同样无法进入else合并数组
        // 所以最后要加入left right
        ret.add(new int[]{left,right});
        //把ret里面存的数组全部列出来
        return ret.toArray(new int[0][]);

    }
}
相关推荐
心中有国也有家7 小时前
cann-recipes-infer:昇腾 NPU 推理的“菜谱集合”
经验分享·笔记·学习·算法
绝知此事7 小时前
【算法突围 01】线性结构与哈希表:后端开发的收纳术
java·数据结构·算法·面试·jdk·散列表
碧海银沙音频科技研究院7 小时前
通话AEC与语音识别AEC的软硬回采链路
深度学习·算法·语音识别
csdn_aspnet8 小时前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
m0_6294947310 小时前
LeetCode 热题 100-----26.环形链表 II
数据结构·算法·leetcode·链表
壹号用户11 小时前
用队列实现栈
数据结构·算法
做人求其滴11 小时前
面试经典 150 题 380 274
c++·算法·面试·职场和发展·力扣
daad77711 小时前
记一组无人机IMU传感器数据
算法
计算机安禾11 小时前
【c++面向对象编程】第42篇:模板特化与偏特化:为特定类型定制实现
开发语言·c++·算法