首页 > 代码库 > 【LeetCode】Insert Interval
【LeetCode】Insert Interval
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]
.
此题主要考虑到各种边界条件
可以用一些小的例子累得出循环的条件,注意将删除节点后应将i--
public class Solution { public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) { if (intervals.isEmpty()) { intervals.add(newInterval); return intervals; } Interval pre = newInterval; for(int i=0;i<intervals.size();i++){ int start = pre.start; int end = pre.end; Interval temp = intervals.get(i); if (temp.start > end) { intervals.add(i, pre); return intervals; } else if (temp.start == end) { temp.start = start; return intervals; } else { if (start <= temp.start && end <= temp.end) { temp.start = start; return intervals; } else if (start <= temp.start && end > temp.end) { intervals.remove(temp); i--; continue; } else if (start > temp.start && end < temp.end) { return intervals; } else if (start > temp.start &&start<temp.end&& end >=temp.end) { pre.start = temp.start; pre.end = end; intervals.remove(temp); i--; continue; } else if (start > temp.end) { pre.start = start; pre.end = end; continue; } else if (start == temp.end) { pre.start = temp.start; pre.end = end; intervals.remove(temp); i--; continue; } } } intervals.add(pre); return intervals; } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。