15.3 Insert Interval
来源:互联网 发布:无标度网络的度分布 编辑:程序博客网 时间:2024/06/02 23:21
Link: https://oj.leetcode.com/problems/insert-interval/
This Q seems easy, but I didn't complete the code.
The difficulty: I don't know how to deal when the newInterval's end < intervals.get(0).start
Approach I: Create a new ArrayList
Time: 0(n) Space: O(1) //结果集的空间不算
Note: When newInterval.end < interval.start: we put newInterval into result, and replace newInterval with current one.
public class Solution { public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) { ArrayList<Interval> result = new ArrayList<Interval>(); int i = 0; for(Interval interval : intervals){ if(newInterval.end < interval.start){ result.add(newInterval); newInterval = interval;//since newInterval has been saved, deal with the original intervals } else if(interval.end < newInterval.start){ result.add(interval); } else{ newInterval.start = Math.min(interval.start, newInterval.start); newInterval.end = Math.max(interval.end, newInterval.end); } } result.add(newInterval); return result; }}
Approach II: Use Iterator
Time: O(n), Space: O(1)
public class Solution { public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) { ListIterator<Interval> it = intervals.listIterator(); while(it.hasNext()){ Interval interval = it.next(); if(newInterval.end < interval.start){//找到插入点 it.previous(); //must use ListIterator to traverse backwards it.add(newInterval); return intervals;//can stop traversing } else if(interval.end < newInterval.start){//还没有overlap continue; } else{//overlap了,更新被插入的Interval,删除原来的(因为已经被用过) newInterval.start = Math.min(interval.start, newInterval.start); newInterval.end = Math.max(interval.end, newInterval.end); it.remove();//why? } } intervals.add(newInterval); return intervals; }}
0 0
- 15.3 Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- Insert Interval
- 就靠你了可能离开
- 大型网站架构技术方案集锦
- LeetCode刷题笔录Unique Binary Search Trees II
- Linux u盘助手期中总结
- LeetCode刷题笔录Letter Combinations of a Phone Number
- 15.3 Insert Interval
- 黑马程序员 java学习笔记——动态代理
- 使用Pig对手机上网日志进行分析
- flume+kafka+storm+mysql架构设计
- flume-ng+Kafka+Storm+HDFS 实时系统搭建
- 如何移植DEDE网站?WIN2WIN.
- Hadoop2.2.0 HA + Jdk1.8.0 + Zookeeper3.4.5 + Hbase0.98 集群搭建详细过程(服务器集群)
- 高质量C/C++编程指南 阅读笔记(二)内存管理
- 局部对象