Leetcode - Merge Intervals
https://leetcode.com/problems/merge-intervals/
Given a collection of intervals, merge all overlapping intervals.
Example 1:
Input: [[1,3],[2,6],[8,10],[15,18]] Output: [[1,6],[8,10],[15,18]] Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | func merge(intervals [][] int ) [][] int { if len(intervals) == 0 || len(intervals[0]) == 0 { return [][] int {} } sort.Slice(intervals, func(i, j int ) bool { return intervals[i][0] < intervals[j][0] }) result := [][] int {} for i := 1; i < len(intervals); i++ { if intervals[i-1][1] < intervals[i][0] { result = append(result, intervals[i-1]) continue } if intervals[i-1][1] >= intervals[i][0] { intervals[i] = [] int {intervals[i-1][0], max(intervals[i-1][1], intervals[i][1])} } } result = append(result, intervals[len(intervals)-1]) return result } func max(a, b int ) int { if a > b { return a } return b } |