当前位置: 首页 > news >正文

【leetcode hot 100 56】合并区间

解法一:排序

我们用数组 merged 存储最终的答案。首先,我们将列表中的区间按照左端点升序排序。然后我们将第一个区间加入 merged 数组中,并按顺序依次考虑之后的每个区间:

  • 如果当前区间的左端点在数组 merged 中最后一个区间的右端点之后,那么它们不会重合,我们可以直接将这个区间加入数组 merged
    的末尾;

  • 否则,它们重合,我们需要用当前区间的右端点更新数组 merged 中最后一个区间的右端点,将其置为二者的较大值。

class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals, new Comparator<int[]>(){
            public int compare(int[] int0, int[] int1){
                return int0[0]-int1[0];
            }
        });
        List<int[]> list = new ArrayList<>();
        for(int i=0; i<intervals.length; i++){
            int L=intervals[i][0], R=intervals[i][1];
            if(list.size()==0 || list.get(list.size()-1)[1] < L){
                list.add(new int[]{L,R});
            }
            else{
                list.get(list.size()-1)[1] = Math.max(list.get(list.size()-1)[1], R);
            }
        }
        return list.toArray(new int[list.size()][2]);
    }
}

注意:

  • List的长度用list.size()获得,而不是list.length()
  • 匿名内部类compare,输出<0不变;输出>0变。
  • 使用list.toArray(),list必须为ArrayList,括号内部要有转换为的类型:list.toArray(new int[list.size()][2])

相关文章:

  • 【计算机网络】Socket
  • CSDN markdown 操作指令等
  • 动漫短剧开发公司,短剧小程序搭建快速上线
  • Springboot整合WebSocket+Redis以及微信小程序如何调用
  • 2000-2020年各省地方财政一般预算收入数据
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-附录B-严格模式
  • FastGPT 源码:基于 LLM 实现 Rerank (含Prompt)
  • 深度学习-142-Text2SQL之基于langchain的少量样本提示词模板FewShotPromptTemplate的应用基础(一)
  • maven推送jar包到nexus
  • 前端大文件上传
  • 鬼泣:项目前置设置杂项
  • 【每日学点HarmonyOS Next知识】Web Header更新、状态变量嵌套问题、自定义弹窗、stack圆角、Flex换行问题
  • C++第二十讲:C++11
  • 权限系统设计方案实践(Spring Security + RBAC 模型)
  • DeepSeek DeepEP学习(一)low latency dispatch
  • sa-token全局过滤器之写法优化(包含设置Order属性)
  • [密码学实战]Java实现TLS 1.2单向认证
  • k8s面试题总结(九)
  • CentOS7 安装Redis 6.2.6 详细教程
  • 安卓内存泄露之DMA-BUF异常增长:Android Studio镜像引起DMA内存泄露
  • 4线城市搞网站开发/免费个人网站注册
  • 门户网站建设工作领导小组/2024年将爆发新瘟疫
  • 深圳大学网站建设/代发新闻稿的网站
  • 自己的博客和自己的网站做友链/深圳小程序开发公司
  • 做网站赚钱多吗/seo职位要求
  • 青岛网站建设公司排名/网站查询关键词排名软件