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

    }
}
相关推荐
颜酱5 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_736919105 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi9878385 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
DuHz6 小时前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理
Polaris北极星少女6 小时前
TRSV优化2
算法
代码游侠7 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
2301_763472467 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
abluckyboy8 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法
园小异8 小时前
2026年技术面试完全指南:从算法到系统设计的实战突破
算法·面试·职场和发展
m0_706653238 小时前
分布式系统安全通信
开发语言·c++·算法