56. 合并区间

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

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

Code

func merge(intervals [][]int) [][]int {n := len(intervals)sort.Slice(intervals, func(a, b int) bool {return intervals[a][0] < intervals[b][0]})// 如果当前区间的左端点在前一个区间的右端点之后,那么他们不会重合,我们可以直接将这个区间插入 merged 中;// 否则,他们重合,我们用当前区间的右端点更新前一个区间的右端点 end 如果前者数值比后者大的话。for i := 0;i < n-1;i++ {if intervals[i][1] >= intervals[i+1][0] {if intervals[i+1][1] > intervals[i][1] {intervals[i][1] = intervals[i+1][1]}// 向前合并// [1,6], [2, 6] --> [1,6]intervals = append(intervals[:i+1], intervals[i+2:]...)i--n--}}return intervals
}

代码都写完了,出来这么一个测试用例(split切片有借鉴意义)

输入:
[[1,4],[5,6]]
输出
[[1,6]]
预期结果
[[1,4],[5,6]]

附赠错误代码


func merge(intervals [][]int) [][]int {if len(intervals) == 0 {return intervals}var split [][]intvar list []intvar res [][]int//nums = [][]int{{1,3},{2,6},{8,10},{15,18}}list = make([]int, intervals[len(intervals)-1][len(intervals[len(intervals)-1])-1]+2)for _, v := range intervals {min := v[0]max := v[len(v)-1]for i:=min; i<=max; i++ {list[i] = i}}//fmt.Println(list)// [0 1 2 3 4 5 6 0 8 9 10 0 0 0 0 15 16 17 18 0]var temp []intfor _, v := range list {if v != 0 {temp = append(temp, v)} else {if len(temp) != 0 {split = append(split, temp)}temp = []int{}}}// [[1 2 3 4 5 6] [8 9 10] [15 16 17 18]]for _, v := range split {res = append(res, []int{v[0], v[len(v)-1]})}return res
}func min(a, b int) int {if a < b {return a}return b
}func max(a, b int) int {if a < b {return b}return a
}

56. 合并区间 golang相关推荐

  1. 56. 合并区间 排序数组

    https://www.b2bchain.cn/6393.html 56. 合并区间首先对开始元素进行排序 之后比较结尾元素判断是否可以加入合并集合//给出一个区间的集合,请合并所有重叠的区间. // ...

  2. leetcode 56. 合并区间

    leetcode 56. 合并区间 题目描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合并所有重叠的区间, ...

  3. LeetCode 56 合并区间

    56. 合并区间 难度中等1153收藏分享切换为英文接收动态反馈 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合 ...

  4. 力扣记录:贪心算法3较难(1)区间问题——55 跳跃游戏,45 跳跃游戏II,452 用最少数量的箭引爆气球,435 无重叠区间,763 划分字母区间,56 合并区间

    本次题目 55 跳跃游戏 45 跳跃游戏II 452 用最少数量的箭引爆气球 435 无重叠区间 763 划分字母区间 56 合并区间 55 跳跃游戏 局部最优:不管每次跳多少步,取最大跳跃步数,若覆 ...

  5. LeetCode 55跳跃游戏56合并区间57插入区间

    原创公众号:bigsai 希望和优秀的你做朋友,感觉不错还请一键三连. 回复进群即可加入和200+人一起打卡.上周打卡: LeetCode 47全排列Ⅱ&48旋转图像 LeetCode 49字 ...

  6. Leetcode 56.合并区间 (每日一题 20210708)

    以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] .请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入 ...

  7. 文巾解题 56. 合并区间

    1 题目描述 2 解题思路 先将intervals按照开始的时间从小到大排序,然后我们建立一个记录结果的数组,和另一个表示当前区间的临时区间,然后对intervals从前向后遍历. 如果当前遍历的in ...

  8. 【Leetcode | 13】56. 合并区间

    给出一个区间的集合,请合并所有重叠的区间. 示例 1: 输入: [[1,3],[2,6],[8,10],[15,18]] 输出: [[1,6],[8,10],[15,18]] 解释: 区间 [1,3] ...

  9. LeetCode 56. 合并区间(优先队列)

    文章目录 1. 题目信息 2. 解题 2.1 报错的答案 2.2 优先队列解题 1. 题目信息 给出一个区间的集合,请合并所有重叠的区间. 示例 1:输入: [[1,3],[2,6],[8,10],[ ...

最新文章

  1. esp32 micropython spiffs_二十一,ESP32 SPIFFS:读取一个文件
  2. Android绘制(一):来用shape绘出想要的图形吧!
  3. 李宏毅老师ML_HW1——PM2.5预测
  4. 源码剖析 Netty 服务启动 NIO
  5. linux系统为什么很重要,为什么Linux系统始终取代不了Windows?这4个原因80%的人不知道!...
  6. VS2013的一些常用快捷键
  7. Python测试Kafka集群(pykafka)
  8. [2019杭电多校第六场][hdu6635]Nonsense Time
  9. maven安装教程(保姆级别)
  10. 大学物理笔记——第二章质点动力学
  11. C#判断是否是节假日
  12. 用python告诉你,韦小宝跟他七个老婆哪个最亲?
  13. 如何快速把芝麻信用分提高到750以上?
  14. 计算型服务器 存储型服务器本质区别
  15. 人工智能AI编程基础(六)
  16. SOD地震数据下载demo详细分析
  17. 【原创】职场:聊聊那些领导没挑明的话
  18. 第二章:HTTP与HTTPS
  19. 【AUTOSAR COM】达芬奇PDUR模块学习笔记
  20. php线上拍卖系统,(D)基于PHP技术的网上拍卖系统

热门文章

  1. 基于webpack搭建的vue element-ui框架
  2. CSS3景深-perspective
  3. 洛谷 P1968 美元汇率
  4. 2018年各大互联网前端面试题五(今日头条)
  5. [python]-数据科学库Numpy学习
  6. javaweb 学习资源
  7. VS2010 快捷键 (空格显示 绿点, Tab 显示箭头)
  8. 网站页面左右_广州网站优化的技巧是什么?
  9. 输入参数的数目不足_sklearn.decomposition.PCA 参数速查手册
  10. r语言赋值为na_r语言将空白格替换成NA