56. 合并区间 golang

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
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/382123.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

忘记手势密码的解决办法

1.在输入密码的界面下方有个紧急呼叫按钮&#xff0c;点击进入紧急呼叫界面&#xff1b;2.输入*#*#7378423#*#*进入工程模式&#xff1b;3.依次选择customizationsettings--restcustomization--Resetcustomization and reboot,4.完成&#xff0c;自动重启&#xff01;呼呼&…

15. 三数之和 golang

15. 三数之和 给你一个包含 n 个整数的数组 nums&#xff0c;判断 nums 中是否存在三个元素 a&#xff0c;b&#xff0c;c &#xff0c;使得 a b c 0 &#xff1f;请你找出所有满足条件且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三元组。 示例&#xff…

云盘搜索找资料

自己平时经常看英剧美剧和电影&#xff0c;为 了寻找资源方便&#xff0c;陆续整理收集汇总 的各类搜索方法&#xff08;网站&#xff09;&#xff0c;现在分享 出来&#xff0c;感兴趣的可以看看~只要被上传到→百度云盘、360盘、 新浪微盘、115盘、华为盘、迅雷、 金山快盘等…

设计师必备的html工具

HTML 5已经成为Web开发者当中最流行的语言之一&#xff0c;“健壮的”语言有很大的生产优质万维网内容的能力。HTML 5在近三年的增长迅猛&#xff0c;新引入HTML 5的技术更加的优秀。HTML 5技术被现代浏览器所支持&#xff0c;如Chrome、Firefox、Internet Explorer等等。而今天…

42. 接雨水 golang

42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图&#xff0c;在这种情况下&#xff0c;可以接 6 个单位的雨水&#xff08;蓝色部分表…

257. 二叉树的所有路径 golang

257. 二叉树的所有路径 给定一个二叉树&#xff0c;返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 输入: 1/ \ 2 3\5输出: [“1->2->5”, “1->3”] 解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3 Code…

dp题目分类

动态规划一般可分为线性动规&#xff0c;区域动规&#xff0c;树形动规&#xff0c;背包动规四类。举例&#xff1a;线性动规&#xff1a;拦截导弹&#xff0c;合唱队形&#xff0c;挖地雷&#xff0c;建学校&#xff0c;剑客决斗等&#xff1b;区域动规&#xff1a;石子合并&a…

349. 两个数组的交集 golang

349. 两个数组的交集 给定两个数组&#xff0c;编写一个函数来计算它们的交集。 示例 1: 输入: nums1 [1,2,2,1], nums2 [2,2] 输出: [2] 示例 2: 输入: nums1 [4,9,5], nums2 [9,4,9,8,4] 输出: [9,4] 说明: 输出结果中的每个元素一定是唯一的。 我们可以不考虑输出结…

poj 1018 Communication System

首先做这个题是极其难受的&#xff0c;第一次去做dp的题&#xff0c;万事开头难&#xff0c;虽然以前也接触过dp&#xff0c;但是都极力躲避着用其他算法解决&#xff0c;现在专门练这部分&#xff0c;倒觉得&#xff0c;你拍什么&#xff0c;什么就会比想象中难很多&#xff0…

大娱乐家

大娱乐家屏幕上跳动的光标&#xff0c;不知道有多久我没有这样安静一会了&#xff0c;也不知多久没在记录那些生活中意味深长的事了&#xff0c;翻转脑海&#xff0c;却发现是一团糟&#xff0c;总有理还乱的错觉&#xff0c;我不知道自大学以来是我实在没经历那种一下子就让人…

120. 三角形最小路径和 golang

120. 三角形最小路径和 给定一个三角形&#xff0c;找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。 例如&#xff0c;给定三角形&#xff1a; [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11&#xff08;即&#xff0c;2 3 5 1 11&…

HDU中一些DP的题目分类

DP是难点&#xff0c;供自已以后系统学习。 1.Robberies 连接 &#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率以为是抢N家银行的概率之和… 把状…

背包九讲

背包九讲--各种背包问题阅读&#xff1a;56462012-02-15 15:34标签&#xff1a;背包P01: 01背包问题题目有N件物品和一个容量为V的背包。第i件物品的费用是c[i]&#xff0c;价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量&#xff0c;且价值总和最大…

golang json判断类型

json怎么判断类型 if q.Number 0 {fmt.Println("q.Number is string!Pass" )}if q.Number 0 {fmt.Println("q.Number is not string!Wrong" )}看上去很粗暴但是很实用&#xff0c;并没有查到满意的方法&#xff0c;待补充。 package main import ("…

11. 盛最多水的容器 golang

11. 盛最多水的容器 &#xff08;一道比较特殊的题&#xff09; 之所以说特殊是因为这个题用动态规划反而比暴力破解法还复杂。 这种容器的题&#xff0c;就是前后指针方向。尽量别考虑别的思路。 11. 盛最多水的容器 给你 n 个非负整数 a1&#xff0c;a2&#xff0c;…&#…

C++中几种将整数转换成二进制输出的方法

看《编程之美》第二节的时候&#xff0c;它是定义的一个整型&#xff0c;然后取位。但是他的那个或运算符号好像写错了&#xff0c;写成了异或符号“^”&#xff0c;应该是“|”。我就突然对二进制的输出感兴趣了。想知道怎样输出二进制。我们知道C输出十六进制是cout〈〈hex〈…

快速pow和sqrt的小技巧 hdu4282

http://acm.hdu.edu.cn/showproblem.php?pid4282 今年网络赛。。天津赛区。。有道题。。是这样的。。。X^Z Y^Z XYZ K 给出K &#xff0c;求XYZ&#xff0c;我思路很明确。。。枚举其二&#xff0c;然后二分其一&#xff0c;但是始终TLE。。。。晚上回去之后&#xff0c;看…

466. 统计重复个数 golang[转]

转载&#xff08;mark&#xff09; https://blog.by24.cn/archives/leetcode-count-the-repetitions.html func getMaxRepetitions(s1 string, n1 int, s2 string, n2 int) int {len1, len2 : len(s1), len(s2)index1, index2 : 0, 0 // 注意此处直接使用 Ra Rb 的下标&#…

pow(x,y)函数

实现浮点类型的幂运算&#xff0c;函数原型为: double pow(double x, int n) 在求解这个问题的时候是一个很挣扎的过程&#xff0c;因为它不是报错而是一直提示你超出时间&#xff0c;那么必须一次次的考虑怎样降低时间复杂度。 首先最直接的思路是下面这样的&#xff0c;就跟直…

LeetCode 303,560,1248 (前缀求和 )

303. 区域和检索 - 数组不可变 给定一个整数数组 nums&#xff0c;求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和&#xff0c;包含 i, j 两点。 示例&#xff1a; 给定 nums [-2, 0, 3, -5, 2, -1]&#xff0c;求和函数为 sumRange() sumRange(0, 2) -> 1 sumRange…