15.4 Merge Intervals
来源:互联网 发布:淘宝抢购用什么浏览器 编辑:程序博客网 时间:2024/05/12 10:36
Link: https://oj.leetcode.com/problems/merge-intervals/
Approach I: Dai's code
把15.3 Insert Interval 作为子操作(Code Ganker认为本题是Insert Interval的子操作, 为什么不同?)@8.31.2014
Time: O(n1+n2+...), //我认为= O(1+2+3+...+n) = O(n^2)
Space: O(1)
public class Solution { //use insert intervals public ArrayList<Interval> merge(ArrayList<Interval> intervals) { ArrayList<Interval> result = new ArrayList<Interval>(); for(int i = 0; i < intervals.size(); i++){ insertIntervals(result, intervals.get(i)); } return result; } public void insertIntervals(ArrayList<Interval> intervals, Interval interval){ ListIterator<Interval> it = intervals.listIterator(); while(it.hasNext()){ Interval cur = it.next(); if(interval.end < cur.start){ it.previous(); it.add(interval);//does this equal to intervals.add(interval)?@8.31.2014 return; } else if (interval.start > cur.end){ continue; } else{ interval.start = Math.min(interval.start, cur.start); interval.end = Math.max(interval.end, cur.end); it.remove(); } } intervals.add(interval); }}
问题:不懂iterator.add(interval) 和intervals.add(interval)有什么区别?@8.31.2014
Approach II: Only compare each interval in the list, with the last one in result list.
Time: O(nlogn + n) = O(nlogn), Space: O(1)
http://blog.csdn.net/linhuanmars/article/details/21857617
public class Solution { //code ganker: http://blog.csdn.net/linhuanmars/article/details/21857617 public ArrayList<Interval> merge(ArrayList<Interval> intervals) { if(intervals == null || intervals.size() == 0) return intervals; ArrayList<Interval> result = new ArrayList<Interval>(); Comparator<Interval> comp = new Comparator<Interval>(){ @Override public int compare(Interval i1, Interval i2){ if(i1.start == i2.start){ return i1.end - i2.end; } else return i1.start - i2.start; } }; Collections.sort(intervals, comp); result.add(intervals.get(0)); for(int i = 1; i < intervals.size(); i++){ Interval last = result.get(result.size()-1); if(last.end >= intervals.get(i).start){ last.end = Math.max(last.end, intervals.get(i).end); } else{ result.add(intervals.get(i)); } } return result; }}
0 0
- 15.4 Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- merge intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- Merge Intervals
- 今日作息及食谱(8.5)
- 黑马程序员---温习面向对象知识点总结
- 【翻译自mos文章】在oracle db 11gR2版本中启用 Oracle NUMA 支持
- HttpClient、HttpURLConnection.Velloy小结
- 基于注解的 SpringMVC 简单介绍
- 15.4 Merge Intervals
- DVI与HDMI的差别
- java模式之Reactor
- 第三个人感受到十多个哈哈哈有又有意义
- 【c++应用程序设计】第1章 数据类型和运算符简介
- 问题与自律
- 黑马程序员--多线程机制
- Android 启动Eclipse报错的解决方法
- 智能家居操作系统:期待国内企业有为