当前位置: 首页 > 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打造轻盈的人人车移动端数据平台
  • 《剑指offer》分解让复杂问题更简单
  • css布局,左右固定中间自适应实现
  • java多线程
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • js对象的深浅拷贝
  • react 代码优化(一) ——事件处理
  • Redux 中间件分析
  • vue-cli3搭建项目
  • Webpack 4 学习01(基础配置)
  • windows-nginx-https-本地配置
  • 从0到1:PostCSS 插件开发最佳实践
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 前端
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 赢得Docker挑战最佳实践
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • MyCAT水平分库
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • #微信小程序(布局、渲染层基础知识)
  • (NSDate) 时间 (time )比较
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (三)模仿学习-Action数据的模仿
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .NET/C# 使用反射注册事件
  • .net连接MySQL的方法
  • .net生成的类,跨工程调用显示注释
  • /dev下添加设备节点的方法步骤(通过device_create)
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Autowired和@Resource的区别
  • @media screen 针对不同移动设备
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [100天算法】-实现 strStr()(day 52)
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [C++从入门到精通] 14.虚函数、纯虚函数和虚析构(virtual)
  • [C++打怪升级]--学习总目录
  • [C++随笔录] 红黑树