贪心算法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][]);

    }
}
相关推荐
前端炒粉19 小时前
35.LRU 缓存
开发语言·javascript·数据结构·算法·缓存·js
断剑zou天涯21 小时前
【算法笔记】窗口内最大值或最小值的更新结构
java·笔记·算法
smj2302_7968265221 小时前
解决leetcode第3753题范围内总波动值II
python·算法·leetcode
骑着猪去兜风.1 天前
线段树(二)
数据结构·算法
fengfuyao9851 天前
竞争性自适应重加权算法(CARS)的MATLAB实现
算法
散峰而望1 天前
C++数组(二)(算法竞赛)
开发语言·c++·算法·github
leoufung1 天前
LeetCode 92 反转链表 II 全流程详解
算法·leetcode·链表
wyhwust1 天前
交换排序法&冒泡排序法& 选择排序法&插入排序的算法步骤
数据结构·算法·排序算法
利刃大大1 天前
【动态规划:背包问题】完全平方数
c++·算法·动态规划·背包问题·完全背包
wyhwust1 天前
数组----插入一个数到有序数列中
java·数据结构·算法