56. Merge Intervals
June 24, 2025
04:32 AM
No headings found
Loading content...
No headings found
Problem
Bài toán yêu cầu bạn gộp các khoảng thời gian (intervals) bị chồng lấn thành các khoảng không chồng lấn. Mỗi interval là một mảng gồm 2 số [start, end] .
Approach
startstart của interval hiện tại lớn hơn end của interval cuối cùng), thêm interval hiện tại vào kết quảend của interval cuối cùng thành giá trị lớn nhất giữa end hiện tại và end cuối cùngSolution
1function merge(intervals: number[][]): number[][] {
2 if (intervals.length === 0) return [];
3 intervals.sort((a, b) => a[0] - b[0])
4
5 let [start, end] = intervals[0];
6 let merged: number[][] = [];
7 for (let i = 1; i < intervals.length; i++) {
8 let [curr_start, curr_end] = intervals[i];
9 if (curr_start > end) {
10 // current interval lays before
11 merged.push([start, end]);
12 [start, end] = [curr_start, curr_end]
13 } else {
14 end = Math.max(end, curr_end);
15 }
16 }
17
18 merged.push([start, end])
19 return merged
20};