Skip to content

Latest commit

 

History

History

0056.merge-intervals

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

题目描述

给出一个区间的集合,请合并所有重叠的区间。

示例 1:

输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

解题思路

具体解法

Golang

func merge(intervals [][]int) [][]int {
	var res [][]int
	if len(intervals) == 0 {
		return res
	}
	if len(intervals) == 1 {
		return intervals
	}
	sort.Slice(intervals, func(i, j int) bool {
		return intervals[i][0] < intervals[j][0]
	})
	tmp := intervals[0]
	flag := false
	for _, nums := range intervals[1:] {
		if tmp[1] >= nums[0] && tmp[0] <= nums[1] {
			if tmp[1] < nums[1] {
				tmp[1] = nums[1]
			}
			if tmp[0] > nums[0] {
				tmp[0] = nums[0]
			}
			flag = true
		} else {
			res = append(res, tmp)
			flag = false
			tmp = nums
		}
	}
	if flag == true || tmp[0] == intervals[len(intervals)-1][0] {
		res = append(res, tmp)
	}
	return res
}