Java for LeetCode 057 Insert Interval

來源:互聯網
上載者:User

標籤:

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

解題思路一:

參考Java for LeetCode 056 Merge Intervals思路一,去掉最外層迴圈即可,JAVA實現如下:

public List<Interval> insert(List<Interval> intervals, Interval newInterval) {        if (newInterval == null)            return intervals;            int startIndex = 0, endIndex = 0;            for (int j = 0; j < intervals.size(); j++) {                if (newInterval.start > intervals.get(j).end) {                    startIndex += 2;                    endIndex += 2;                    continue;                }                if (newInterval.end < intervals.get(j).start)                    break;                if (newInterval.start >= intervals.get(j).start)                    startIndex++;                if (newInterval.end > intervals.get(j).end) {                    endIndex += 2;                    continue;                }                if (newInterval.end >= intervals.get(j).start)                    endIndex++;                break;            }            if(startIndex==endIndex&&startIndex%2==0)                intervals.add(startIndex/2,new Interval(newInterval.start,newInterval.end));            else if(startIndex%2==0&&endIndex%2==0){                intervals.get(startIndex/2).start=newInterval.start;                intervals.get(startIndex/2).end=newInterval.end;                for(int k=1;k<endIndex/2-startIndex/2;k++)                intervals.remove(startIndex/2+1);            }            else if(startIndex%2==0&&endIndex%2!=0){                intervals.get(startIndex/2).start=newInterval.start;                intervals.get(startIndex/2).end=intervals.get(endIndex/2).end;                for(int k=1;k<=endIndex/2-startIndex/2;k++)                    intervals.remove(startIndex/2+1);            }            else if(startIndex%2!=0&&endIndex%2==0){                intervals.get(startIndex/2).end=newInterval.end;                for(int k=1;k<endIndex/2-startIndex/2;k++)                    intervals.remove(startIndex/2+1);            }            else if(startIndex%2!=0&&endIndex%2!=0){                intervals.get(startIndex/2).end=intervals.get(endIndex/2).end;                for(int k=1;k<=endIndex/2-startIndex/2;k++)                    intervals.remove(startIndex/2+1);            }        return intervals;    }

 解題思路二:

參考Java for LeetCode 056 Merge Intervals思路二,添加後重新排序即可,JAVA實現如下:

public List<Interval> insert(List<Interval> intervals, Interval newInterval) {        if (intervals == null)         return intervals;        List<Interval> list = new ArrayList<Interval>();        intervals.add(newInterval);        Comparator<Interval> comparator = new Comparator<Interval>() {            @Override            public int compare(Interval o1, Interval o2) {                if (o1.start == o2.start)                    return o1.end - o2.end;                return o1.start - o2.start;            }        };        Collections.sort(intervals, comparator);        for (Interval interval : intervals) {            if (list.size() == 0 || list.get(list.size() - 1).end < interval.start)                 list.add(new Interval(interval.start, interval.end));            else                list.get(list.size() - 1).end = Math.max(interval.end, list.get(list.size() - 1).end);        }        return list;    }

 

Java for LeetCode 057 Insert Interval

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.