【leetcode】56. (Hard)Merge Intervals
阿新 • • 發佈:2018-11-22
解題思路:
剛開始我準備先將所有的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;
}
}
執行結果:
先排序再合併:
設定雙陣列: