56 合并区间
代码如下
func merge(intervals [][]int) [][]int {
sort.Slice(intervals,func(i,j int)bool{ //将数组按左边界的大小排序
return intervals[i][0]<intervals[j][0]
})
res := make([][]int,0) //定义一个目标数组
res = append(res,intervals[0]) //先将数组的第一个元素加入到目标数组里
for i := 1 ; i < len(intervals) ; i++ {
if intervals[i][0] <= res[len(res)-1][1] { //res[len(res)-1][1] ,res[len(res)-1]这个代表res数组里的最后一个元素,res[len(res)-1][1]表示res数组里面最后一个元素的右边界,这个判断条件是如果当前数组小于等于上一个数组的右边界说明两个数组重合了
res[len(res)-1][1] = max(intervals[i][1],res[len(res)-1][1]) // 进行合并操作,并更新右边界
}else {
res = append(res,intervals[i]) //如果没有重合,则加入这个元素
}
}
return res
}文章来源地址https://www.toymoban.com/news/detail-433254.html
func max(a,b int) int {
if a > b {
return a
}else {
return b
}
}
738 单调递增的数字
func monotoneIncreasingDigits(n int) int {
s := strconv.Itoa(n) //将整数转换为字符串
ss := []byte(s) //将字符串转换为字符
if len(ss) <= 1 {
return n //如果这个数字只有一个数字直接返回
}
flag := -1 //设置flag ,设置为-1的目的是如果这个数组本身为单调递增的数组那么就不需要改变flag,否则就要改变flag。而修改的flag的取值是数组的下标,所以设置为-1这个下标
for i := len(ss)-1 ; i > 0 ; i-- {
if ss[i-1] > ss[i] {
ss[i-1] -= 1 //如果这个数组的当前这个数小于前一个数,那么就要将前一个数-1,并且记录当前这个数
flag = i
}
}
if flag != -1 { //如果flag被修改过,则将flag之后的所有数字变为9
for i := flag ; i < len(ss) ; i++ {
ss[i] = '9'
}
}
res, _ := strconv.Atoi(string(ss))
return res 文章来源:https://www.toymoban.com/news/detail-433254.html
}
到了这里,关于代码随想录补打卡 56 合并区间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!