給出一個無重疊的按照區間起始端點排序的區間列表。
在列表中插入一個新的區間,你要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。
/** * Definition of Interval: * public classs Interval { * int start, end; * Interval(int start, int end) { * this.start = start; * this.end = end; * } */ public class Solution { /* * @param intervals: Sorted interval list. * @param newInterval: new interval. * @return: A new interval list. */ public List<Interval> insert(List<Interval> intervals, Interval newInterval) { // write your code here if (intervals == null || newInterval == null) { return null; } if (intervals.size() == 0) { intervals.add(newInterval); return intervals; } ListIterator<Interval> iterator = intervals.listIterator(); while (iterator.hasNext()) { Interval tmpInterval = iterator.next(); if (tmpInterval.start > newInterval.end) { iterator.previous(); iterator.add(newInterval); return intervals; } else { if (tmpInterval.end < newInterval.start) { continue; } else { newInterval.start = Math.min(tmpInterval.start, newInterval.start); newInterval.end = Math.max(tmpInterval.end, newInterval.end); iterator.remove(); } } } intervals.add(newInterval); return intervals; } }