您的位置:首页 > 其它

57. Insert Interval

2016-06-27 14:09 183 查看
题目:

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

思路:这题还是很简单的,根据例子就应该想到一种解决方案。

关键是找到newStart和newEnd。代码写的很烂

/**
* Definition for an interval.
* public class Interval {
*     int start;
*     int end;
*     Interval() { start = 0; end = 0; }
*     Interval(int s, int e) { start = s; end = e; }
* }
*/
public class Solution {
public List<Interval> insert(List<Interval> intervals, Interval newInterval) {
List<Interval> result = new ArrayList<>();
if(intervals.size() == 0)
{
result.add(newInterval);
return result;
}
int newStart = -1,newEnd = -1;
int flag = 0;
for(Interval interval : intervals)
{
int start = interval.start;
int end = interval.end;
if(newInterval.start>=start && newInterval.start<=end)
{
newStart = start;
}
if(newInterval.end>=start && newInterval.end<=end)
{
newEnd = end;
}
}
if(newStart == -1){newStart = newInterval.start;}
if(newEnd == -1){newEnd = newInterval.end;}
for(Interval interval : intervals)
{
if(interval.end<newStart)
{
result.add(interval);
}else if(flag == 0)
{
result.add(new Interval(newStart, newEnd));
flag = 1;
}
if(interval.start>newEnd)
{
result.add(interval);
}
}
if(flag == 0) result.add(newInterval);
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: