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

mb601cf691d1fe2 · · 382 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

合并区间

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

示例 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
}

 


有疑问加站长微信联系(非本文作者)

本文来自:51CTO博客

感谢作者:mb601cf691d1fe2

查看原文:【leetCode】leetCode刷题Golang版本--合并区间

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

382 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传