博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
力扣(LeetCode)56
阅读量:6256 次
发布时间:2019-06-22

本文共 1283 字,大约阅读时间需要 4 分钟。

题目地址:

题目描述:
给出一个区间的集合,请合并所有重叠的区间。

示例 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
merge(List
intervals) { Collections.sort(intervals, new Comparator
() { @Override public int compare(Interval o1, Interval o2) { if(o1.start != o2.start) return o1.start-o2.start; return o1.end-o2.end; } }); List
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; }}

转载地址:http://alnsa.baihongyu.com/

你可能感兴趣的文章
使用HAXM为QEMU for Windows加速
查看>>
配置tomcat下war包可以自压缩
查看>>
idea中artifacts、facets、modules是什么意思?
查看>>
大数据下的Distinct Count(一):序
查看>>
android 打包
查看>>
FUCKED-BUG之临时对象的生死
查看>>
一句话开启XP_CMDSHELL
查看>>
【100题】第四十五题 雅虎面试两道题(矩阵判断、数组划分)
查看>>
MySQL基础知识
查看>>
HTML页面优化
查看>>
centos6下安装docker
查看>>
常见的算法PHP 版,自整理
查看>>
使用UITableView隐藏的复选功能
查看>>
自定义下拉菜单(按钮下面出现下拉菜单),失去焦点后,如何下拉菜单自动消失,以及弹出窗体位置一直变化问题...
查看>>
uboot指令和环境变量
查看>>
Python之模块(二)
查看>>
Python跳出循环语句continue与break的区别
查看>>
内存中堆,栈的区别
查看>>
JavaScript
查看>>
django 配置邮件发送 send_email
查看>>