博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode: Merge Intervals 解题报告
阅读量:6859 次
发布时间:2019-06-26

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

Merge Intervals

Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].

SOLUTION 1:

1. 先使用Comparator 的匿名类对intervels进行排序。

2. 把Intervals遍历一次,依次一个一个merge到第1个interval。 把第1个interval设置为last(最后一个加到结果集里)

有2种情况:

  (1) cur在last的后面。把last加到结果集,将cur加到结果集中。

    (2)cur与last有重合部分,把它们合并,合并之后的区间作为新的last.

所有的都扫完后,把last加到结果集中即可。

 

注意:因为现在Leetcode所有入参都搞成了List,所以遍历时最好使用Iterator,这样无论对于Linkedlist,还是arraylist,性能都是一样的,否则使用get(i)对于LinkedList会相当的缓慢,就不是O(1)的时间了。

复杂度:排序是NlogN, 而merge本身是N。所以总体时间复杂度是NlogN

1 /** 2  * Definition for an interval. 3  * public class Interval { 4  *     int start; 5  *     int end; 6  *     Interval() { start = 0; end = 0; } 7  *     Interval(int s, int e) { start = s; end = e; } 8  * } 9  */10 public class Solution {11     public List
merge(List
intervals) {12 List
ret = new ArrayList
();13 if (intervals == null || intervals.size() == 0) {14 return ret;15 }16 17 Collections.sort(intervals, new Comparator
() {18 public int compare(Interval o1, Interval o2) {19 // sort the intervals by the start.20 return o1.start - o2.start;21 }22 });23 24 // 作为最后一个插入的区间25 Interval last = intervals.get(0);26 27 // 这里要考虑性能。使用iterator的话,对linkedlist会更快. 28 Iterator
itor = intervals.iterator();29 while (itor.hasNext()) {30 Interval cur = itor.next();31 // cur 在last的右边32 if (cur.start > last.end) {33 // 将cur作为新的last.34 ret.add(last);35 last = cur;36 // cur与last有重合的部分,合并之 37 } else {38 int s = last.start;39 int e = Math.max(last.end, cur.end);40 last = new Interval(s, e);41 }42 }43 44 // 把最后一个区间加上45 ret.add(last);46 47 return ret;48 }49 }
View Code

 

 

REF:

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

你可能感兴趣的文章
linux异步IO--aio
查看>>
Installing Hyperledger Fabric v1.1 on Ubuntu 16.04 — Part I
查看>>
sql--CONVERT、FOR XML PATH解决实际问题
查看>>
WPF - 模板查看工具:Show Me The Template及如何查看第三方主题
查看>>
Unix lrzsz命令 上传本地文件到服务器 / 发送文件到客户端
查看>>
JQuery -- this 和 $(this) 的区别
查看>>
PostgreSQL 连接问题 FATAL: no pg_hba.conf entry for host
查看>>
Android 6.0运行时权限第三方库的使用-----RxPermissions
查看>>
leetcode 100. Same Tree
查看>>
搜狗拼音输入法 V9.1.0.2589 最新去广告精简优化版
查看>>
Centos7.4和Ubuntu18.04安装PHP7.2
查看>>
25岁,可能是人生最尴尬的一个年龄
查看>>
dotnet core 开发无缝兼容Http和Websocket协议的接口服务
查看>>
对啊英语音标---四、双元音常见的字母发音组合有哪些
查看>>
Resource 定位、BeanDefinition 的载入和解析,BeanDefinition 注册。
查看>>
PHP模拟登录发送闪存
查看>>
com.sun.mirror的jar包
查看>>
非常详尽的 Shiro 架构解析
查看>>
负载均衡获得真实源IP的6种方法 【转】
查看>>
Windows远程协助相关汇总
查看>>