插入区间
2015-12-06 23:41
183 查看
给出一个无重叠的按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
样例
插入区间[2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]。
插入区间[3, 4] 到 [[1,2], [5,9]],我们得到 [[1,2], [3,4], [5,9]]。
在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
样例
插入区间[2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]。
插入区间[3, 4] 到 [[1,2], [5,9]],我们得到 [[1,2], [3,4], [5,9]]。
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */ class Solution { /** * Insert newInterval into intervals. * @param intervals: Sorted interval list. * @param newInterval: A new interval. * @return: A new sorted interval list. */ public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) { // write your code here if(intervals == null || newInterval == null ){ return intervals; } if(intervals.size()==0){ intervals.add(newInterval); return intervals; } ListIterator<Interval> it = intervals.listIterator(); while(it.hasNext()){ Interval temInterval = it.next(); if(newInterval.end < temInterval.start){ it.previous(); it.add(newInterval); return intervals; }else{ if(temInterval.end<newInterval.start){ continue; }else{ newInterval.start = Math.min(temInterval.start,newInterval.start); newInterval.end = Math.max(temInterval.end,newInterval.end); it.remove(); } } } intervals.add(newInterval); return intervals; } }
相关文章推荐
- iOS三种多线程技术NSThread,NSOperation/NSOperationQueue,GCD-Grand Central Dispatch
- 手机控制电脑关机程序
- MongoDB中的_id和ObjectId
- 【C语言提高30】二级指针强化训练[02]
- 连接数据库
- DynamicAPK基本概念
- Android PullZoomView:PullToZoomListViewEx(1)
- Parquet_3. 在 Impala, Hive, Pig, MR中使用 Parquet File -- 待完善
- 【C语言提高30】二级指针强化训练
- Exchange 2013 SP1 安装准备工作
- Java资源大全中文版
- COCOS-3.X事件分发机制-触摸事件
- 【郝斌数据结构自学笔记】57-59_递归8 _ 汉诺塔_1线性结构总复习 2线性结构和非线性结构关系 3栈队列链表数组之间的关系【重点】
- .NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存
- CStdioFile Class
- 利用 RecyclerView 实现垂直交错的网格
- HDU 1207 汉诺塔II DP
- 怎样学习 C++ STL?
- React的Transaction浅析
- 20135210程涵——信息安全系统设计基础第十三周学习总结