#56
Medium Algorithms Merge intervals
Array Sorting
51.2% acceptance
Jan 12, 2026
24470
899
Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.
Solution
Rust
Time O(n log n)
Space O(n)
impl Solution {
pub fn merge(mut intervals: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
if intervals.is_empty() {
return vec![];
}
intervals.sort_by_key(|interval| interval[0]);
let mut result = vec![intervals[0].clone()];
for i in 1..intervals.len() {
let last = result.last_mut().unwrap();
if intervals[i][0] <= last[1] {
last[1] = last[1].max(intervals[i][1]);
} else {
result.push(intervals[i].clone());
}
}
result
}
}