merge-intervals

題目描述

Given a collection of intervals, merge all overlapping intervals.
For example,
Given[1,3],[2,6],[8,10],[15,18],
return[1,6],[8,10],[15,18].

java實現

public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        ArrayList<Interval> results = new ArrayList<Interval>();// 結果集合,存放符合要求的interval
        if (intervals.size() < 2)
            return intervals;
        Collections.sort(intervals, new Comparator<Interval>() {// intervals排序,按start的大小升序排列
            @Override
            public int compare(Interval o1, Interval o2) {
                return o1.start - o2.start;
            }
        });
        results.add(intervals.get(0));// 初始化加入第一個interval
        for (int i = 1; i < intervals.size(); i++) {
            Interval cur = intervals.get(i);
            Interval pre = results.get(results.size() - 1);
            if (pre.end >= cur.start) {//比較前一個的end值和後一個的start值
                pre.end = Math.max(pre.end, cur.end);
                results.remove(results.size() - 1);
                results.add(pre);
            } else {
                results.add(cur);
            }
        }
        return results;
    }
發佈了113 篇原創文章 · 獲贊 19 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章