zoukankan      html  css  js  c++  java
  • *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].

    与上一题基本一样的解法。

    public class Solution {
        public List<Interval> insert(List<Interval> intervals, Interval newInterval) 
        {
            List<Interval> res = new ArrayList<Interval>();
            intervals.add(newInterval);
            res = merge(intervals);
            return res;
        }
        
        public List<Interval> merge(List<Interval> intervals) 
        {
            if (intervals == null || intervals.size() <= 1) {
                return intervals;
            }
            Collections.sort(intervals, new IntervalComparator());
    
            List<Interval> res = new ArrayList<Interval>();
            int i=0;
            while(i<intervals.size())
            {
                Interval newint = new Interval();
                int newstart = intervals.get(i).start;
                int newend = intervals.get(i).end;
                int j=i+1;
                while(j<intervals.size()&&newend>=intervals.get(j).start)
                {
                    newend = Math.max(newend,intervals.get(j).end);
                    j++;
                }
                newint.start=newstart;
                newint.end=newend;
                res.add(newint);
                if(j!=i+1) i=j;
                else i++;
            }
            return res;
        }
        
        private class IntervalComparator implements Comparator<Interval> 
        {
            public int compare(Interval a, Interval b) 
            {
                return a.start - b.start;
            }
        }
        
    }
  • 相关阅读:
    基于silverlight 实现的文件浏览器
    基于silerlight for embedd 视频播放器的之一的问题
    DSHOW_IVideoWindow的不解
    图片浏览开发初步的问题
    MOSS 修改计算机名称
    MOSS中显示登录用户在AD中的全名
    MOSS工作流任务权限控制
    RMS配置
    修改AD密码的方法
    MOSS母板页中的PlaceHolder
  • 原文地址:https://www.cnblogs.com/hygeia/p/5112649.html
Copyright © 2011-2022 走看看