Skip to main content
Back to problems
#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)
LeetCode
solution.rs
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
  }
}