合并区间

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

示例 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] 可被视为重叠区间。

   

 

解题过程:

思路:

1. 首先集合应该是一个有序集合(升序)

2. 比较两个元素的开始和结束索引值大小

3. 在原有集合上修改注意索引和长度问题

 【leetCode】leetCode刷题Golang版本--合并区间_leetCode

索引值发生变化,需要重新处理索引值

func merge(intervals [][]int) [][]int{
	l := len(intervals)
	if l <= 1{
		 return intervals
	}
	sort.Slice(intervals, func(i, j int) bool {
		return intervals[i][0] < intervals[j][0]
	})
	for i:= 0; i< l-1 ; i++  {
		if intervals[i][1] >= intervals[i+1][0]{
			if intervals[i][1] < intervals[i+1][1]{
				intervals[i][1] =  intervals[i+1][1]
			}
			intervals = append(intervals[:i+1], intervals[i+2:]...)
			i--
			l--
		}
	}
	return intervals
}