LintCode 30. 插入区间

给出一个无重叠的按照区间起始端点排序的区间列表。

在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。

/**
 * 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;
    }
}

阅读更多
文章标签: java lintcode
个人分类: java开发
相关热词: lintcode
上一篇LintCode 29. 交叉字符串
下一篇LintCode 31. 数组划分
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭