Leetcode - Summary Ranges
Leetcode - Missing Ranges

Leetcode - Merge Intervals

violet posted @ Mar 31, 2020 02:48:52 AM in 算法 with tags Algorithm array Golang , 216 阅读

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].

 

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
}

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter