Description
https://leetcode.com/problems/merge-intervals/
合并区间
Solving Ideas
https://leetcode.com/problems/merge-intervals/solution/
按区间下限的大小对区间进行排序,然后再对区间进行合并
时间复杂度:
O
(
n
l
o
g
(
n
)
)
O(nlog(n))
O(nlog(n))
空间复杂度:
O
(
1
)
O(1)
O(1)
Solution
class Solution {
public List<Interval> merge(List<Interval> intervals) {
if (intervals == null) return null;
List<Interval> res = new ArrayList<>();
if (intervals.size() == 0) return res;
intervals.sort(new Comparator<Interval>() {
@Override
public int compare(Interval o1, Interval o2) {
return Integer.compare(o1.start, o2.start);
}
});
int lower = intervals.get(0).start;
int upper = intervals.get(0).end;
for (int i = 1; i < intervals.size(); i++) {
Interval tmp = intervals.get(i);
if (tmp.start <= upper) {
upper = Math.max(upper, tmp.end);
} else {
res.add(new Interval(lower, upper));
lower = tmp.start;
upper = tmp.end;
}
}
res.add(new Interval(lower, upper));
return res;
}
}