合并区间
给出一个区间的集合,请合并所有重叠的区间。
示例 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. 在原有集合上修改注意索引和长度问题
索引值发生变化,需要重新处理索引值
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 }
有疑问加站长微信联系(非本文作者)