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

力扣(LeetCode)56

题目地址:
https://leetcode-cn.com/probl...
题目描述:
给出一个区间的集合,请合并所有重叠的区间。

示例 1:

输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
示例 2:

输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

解答:
按照区间起始节点排序。
然后合并即可,这题难的是怎么写出完美的合并代码。
判断逻辑是如果ans列表为空或者ans列表最后一个区间和当前区间不相交就加入当前区间。
否则把ans列表最后一个区间和当前区间合并。

java ac代码:

/**
 * Definition for an interval.
 * public class Interval {
 *     int start;
 *     int end;
 *     Interval() { start = 0; end = 0; }
 *     Interval(int s, int e) { start = s; end = e; }
 * }
 */
class Solution {
    public List<Interval> merge(List<Interval> intervals) {
        
        Collections.sort(intervals, new Comparator<Interval>() {
            @Override
            public int compare(Interval o1, Interval o2) {
                if(o1.start != o2.start)
                return o1.start-o2.start;
                return o1.end-o2.end;
            }
        });
        List<Interval> ans = new ArrayList(intervals.size());
        for(int i = 0;i < intervals.size();i++)
            if(ans.size() == 0||ans.get(ans.size()-1).end < intervals.get(i).start)
                ans.add(intervals.get(i));
        else
            ans.get(ans.size()-1).end =Math.max(intervals.get(i).end,ans.get(ans.size()-1).end    );
        return ans;
        
        
    }
}

相关文章:

  • mybatis-plus 3.1.0 发布,划重点一大波升级
  • JS里的Array
  • IDEA 插件开发入门教程
  • python人工智能机器人工具书籍: Python Robotics Projects - 2018
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • ES10 特性的完整指南
  • BZOJ2744:[HEOI2012]朋友圈(最大团,乱搞)
  • 突破自己的技术思维
  • Javascript编码规范
  • 软件开发学习的5大技巧,你知道吗?
  • Linux快速复制或删除大量小文件
  • c#用winform开发一个简易双色球项目
  • 微信小程序设置上一页数据
  • Java教程_软件开发基础
  • 基于MaxCompute打造轻盈的人人车移动端数据平台
  • 【译】JS基础算法脚本:字符串结尾
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • ES6简单总结(搭配简单的讲解和小案例)
  • Github访问慢解决办法
  • idea + plantuml 画流程图
  • iOS 系统授权开发
  • javascript数组去重/查找/插入/删除
  • js数组之filter
  • SegmentFault 2015 Top Rank
  • Solarized Scheme
  • Vue实战(四)登录/注册页的实现
  • 给Prometheus造假数据的方法
  • 关于Java中分层中遇到的一些问题
  • 两列自适应布局方案整理
  • 小程序测试方案初探
  • 追踪解析 FutureTask 源码
  • 《天龙八部3D》Unity技术方案揭秘
  • zabbix3.2监控linux磁盘IO
  • 关于Android全面屏虚拟导航栏的适配总结
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (175)FPGA门控时钟技术
  • (2)Java 简介
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (六)Hibernate的二级缓存
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (三)uboot源码分析
  • (四)图像的%2线性拉伸
  • (转载)Google Chrome调试JS
  • .NET Framework 服务实现监控可观测性最佳实践
  • .Net FrameWork总结
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .net2005怎么读string形的xml,不是xml文件。
  • .net访问oracle数据库性能问题
  • [ SNOI 2013 ] Quare
  • []Telit UC864E 拨号上网
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...