LeetCode.56. Merge Intervals

https://leetcode.com/problems/merge-intervals/

class Solution {
    public List<Interval> merge(List<Interval> intervals) {
        Collections.sort(intervals, new Comparator<Interval>() {
            @Override
            public int compare(Interval o1, Interval o2) {
                return o1.start - o2.start;
            }
        });

        List<Interval> result = new ArrayList<>();

        for (int i = 0; i < intervals.size(); i++) {
            if (result.isEmpty()) {
                // 如果是空的,加入列表
                result.add(intervals.get(i)); 
            } else {
                // 如果不是空的,取出最後一個
                Interval lastOne = result.get(result.size() - 1);
                if (lastOne.end < intervals.get(i).start) {
                    // 最後一個與當前沒有交集,加入
                    result.add(intervals.get(i));
                } else {
                    // 有交集,那麼將最後一個的end改爲兩個中的最大值
                    lastOne.end = Math.max(intervals.get(i).end, lastOne.end);
                }
            }
        }

        return result;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章