57. Insert Interval
来源:互联网 发布:举例说明算法的可行性 编辑:程序博客网 时间:2024/05/22 12:23
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).
You may assume that the intervals were initially sorted according to their start times.
Example 1:
Given intervals [1,3],[6,9]
, insert and merge [2,5]
in as [1,5],[6,9]
.
Example 2:
Given [1,2],[3,5],[6,7],[8,10],[12,16]
, insert and merge [4,9]
in as [1,2],[3,10],[12,16]
.
This is because the new interval [4,9]
overlaps with [3,5],[6,7],[8,10]
.
题意有点晦涩,翻译一下就是例如给你[1,2],[3,5],[6,7],[8,10],[12,16]
, 现在插入一个[4,9]
进行合并,问合并之后是什么样子,这个例子合并之后应该是 [1,2],[3,10],[12,16]
.这个样子。
思路和题56差不多,要多处理一下这个新插入的区间。
给定的区间集合是有序的,把【新区间】,插入到原来区间集合里的【合适位置】,所谓合适位置就是原来集合是按区间左端点升序排列的,插入以后还要满足新集合按照左端点升序排列,再套用题Merge Intervals的处理办法进行合并。
public List<Interval> insert(List<Interval> intervals, Interval newInterval){List<Interval> retlist=new ArrayList<>();int len=intervals.size();if(len<1){retlist.add(newInterval);return retlist;}int index=0;while(index<len&&newInterval.start>=intervals.get(index).start)index++;if(newInterval.start<intervals.get(0).start)intervals.add(0, newInterval);else {intervals.add(index, newInterval);}len++;boolean[] used=new boolean[len];for(int i=0;i<len;i++)if(!used[i]){used[i]=true;Interval in1=intervals.get(i);int newstart=in1.start;int newend=in1.end;for(int j=i+1;j<len;j++)if(!used[j]){Interval in2=intervals.get(j);if(in2.start<=newend){newend=Math.max(newend, in2.end);used[j]=true;}else {break;}}retlist.add(new Interval(newstart, newend));}return retlist;}
- LeetCode --- 57. Insert Interval
- [Leetcode] 57. Insert Interval
- [LeetCode]57.Insert Interval
- [leetcode] 57.Insert Interval
- 57. Insert Interval
- [leetcode] 57.Insert Interval
- 57. Insert Interval
- 57. Insert Interval
- lkeetcode 57. Insert Interval
- 57. Insert Interval
- Leetcode 57. Insert Interval
- LeetCode 57. Insert Interval
- 57. Insert Interval
- 57. Insert Interval
- 57. Insert Interval
- 57. Insert Interval
- LeetCode 57. Insert Interval
- [LeetCode] 57. Insert Interval
- Best Time to Buy and Sell Stock
- 实现二叉搜索树--查找、插入、删除
- 手机开发实战67——MIME介绍2
- uva 1382 Distant Galaxy (枚举&&扫描&&贪心dp)
- 关于如何进行代码重构的思考
- 57. Insert Interval
- 手机开发实战68——MIME介绍3
- [LeetCode][4]Median of Two Sorted Arrays解析 -Java实现
- position(转载)
- 手机开发实战69——MIME介绍4
- Python使用函数默认值实现函数静态变量的方法
- 欢迎使用CSDN-markdown编辑器
- 实战自动化测试Espresso和Ui automator(一)
- 机房收费系统总结篇(二)