Leetcode027--插入区间

来源:互联网 发布:phantomjs pdf python 编辑:程序博客网 时间:2024/05/22 06:22

一、原题



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].  



二、中文



给定一系列非覆盖的区间,插入一个新的区间,有必要的时候进行区间合并,区间开始是以起始时间进行合并的 



三、举例



原来的区间是[2,5] 第二个区间是[6,9] 当我们插入一个区间[4,7]后,最后得到的区间是[2,9]


四、思路



1、如果插入的区间比集合的end小,就直接插入

2、如果插入的区间的end比带插入区间的start小,就插入到里边

3、插入区间有重叠,更新就更新插入区间,start选小的,end选大的



五、程序



package code;import java.util.*;class Interval2 { int start; int end; Interval2(){start = 0;end = 0;} Interval2(int s, int e){start = s;end = e;}}public class LeetCode35{public static void main(String args[]){LinkedList<Interval2> num = new LinkedList<Interval2>();Interval2 in1 = new Interval2(1, 3);Interval2 in2 = new Interval2(4, 6);Interval2 in3 = new Interval2(8, 10);Interval2 in4 = new Interval2(13, 20);num.add(in1);num.add(in2);num.add(in3);num.add(in4);Interval2 add = new Interval2(5, 9);LinkedList<Interval2> list = insertRegion(num, add);Iterator<Interval2> it = list.iterator();while(it.hasNext()){Interval2 iter = it.next();System.out.print(iter.start+" ");System.out.print(iter.end+" ");}}public static LinkedList<Interval2> insertRegion(LinkedList<Interval2> intervals, Interval2 newInterval) {//保存结果集LinkedList<Interval2> res = new LinkedList<Interval2>();//输入集如果是非空的if(intervals != null){for(Interval2 item : intervals){if(newInterval == null || item.end < newInterval.start){res.add(item);}//将比插入区间大的区间插入到结果集中else if(item.start > newInterval.end){res.add(newInterval);res.add(item);newInterval = null;}//插入区间有重叠,更新插入区间else{newInterval.start = Math.min(newInterval.start, item.start);newInterval.end = Math.max(newInterval.end, item.end);}}}return res;}}

------------------------output----------------------------

1 3 4 10 13 20 




1 0
原创粉丝点击