1. 程式人生 > >【leetcode】56. (Hard)Merge Intervals

【leetcode】56. (Hard)Merge Intervals

解題思路:
剛開始我準備先將所有的interval按照start的大小先排序,然後再排序。但是太耗時了。第二種做法參考了題目後面的description


提交程式碼:

class Solution {
	public List<Interval> merge(List<Interval> intervals) {
		List<Interval> res = new ArrayList<Interval>();
		if (intervals.size() == 0)
			return res;

		int[] starts =
new int[intervals.size()]; int[] ends = new int[intervals.size()]; for (int i = 0; i < intervals.size(); i++) { starts[i] = intervals.get(i).start; ends[i] = intervals.get(i).end; } Arrays.sort(starts); Arrays.sort(ends); for (int i = 0, j = 0; i < intervals.size(); i++) { if
(i == intervals.size() - 1 || starts[i + 1] > ends[i]) { res.add(new Interval(starts[j], ends[i])); j = i + 1; } } return res; } }

執行結果:
先排序再合併:
在這裡插入圖片描述

設定雙陣列:
在這裡插入圖片描述