代码随想录补打卡 56 合并区间

这篇具有很好参考价值的文章主要介绍了代码随想录补打卡 56 合并区间。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 

}

到了这里,关于代码随想录补打卡 56 合并区间的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 代码随想录Day_48打卡

    你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统, 如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。 给定一个代表每个房屋存放金额的非负整数数组,计算你  不触

    2024年02月11日
    浏览(38)
  • 代码随想录Day_52打卡

    给你一个整数数组  nums  ,找到其中最长严格递增子序列的长度。 子序列  是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如, [3,6,2,7]  是数组  [0,3,1,6,2,2,7]  的子序列。 事例: 思路:        使用动态规划,dp含义:dp[i]表示数

    2024年02月10日
    浏览(38)
  • day78【代码随想录】区间DP专题

    1、多边形三角剖分的最低得分 2、猜数字大小 II 3、让字符串成为回文串的最少插入次数 4、切棍子的最小成本 5、戳气球 6、合并石头的最低成本 分析: 大佬详细题解 分析: 这一段题解是灵魂! 大佬题解 类似于算法书中的矩阵连乘问题 分析: 跟判断回文串思路一样,但是

    2023年04月13日
    浏览(59)
  • 代码随想录打卡—day41—【DP】— 8.26+27 DP基础3

    343. 整数拆分 一开始做 没有思路,学习了题解才,ac代码: 后来仔细看题解,其实 for - j 的次数可以优化—— 注意 枚举j的时候,是从1开始的。从0开始的话,那么让拆分一个数拆个0,求最大乘积就没有意义了。 优化1: j 的结束条件是 j i - 1 ,其实 j i 也是可以的,不过

    2024年02月11日
    浏览(39)
  • 算法随想录第三十九天打卡|62.不同路径 , 63. 不同路径 II

    本题大家掌握动态规划的方法就可以。 数论方法 有点非主流,很难想到。  代码随想录 视频讲解: 动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili 总结 把m和n弄反了。 https://programmercarl.com/0063.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84II.htmlhttps://programmercarl.com/00

    2024年01月20日
    浏览(47)
  • 算法随想录第三十八天打卡| 理论基础 , 509. 斐波那契数, 70. 爬楼梯 , 746. 使用最小花费爬楼梯

     理论基础  无论大家之前对动态规划学到什么程度,一定要先看 我讲的 动态规划理论基础。  如果没做过动态规划的题目,看我讲的理论基础,会有感觉 是不是简单题想复杂了?  其实并没有,我讲的理论基础内容,在动规章节所有题目都有运用,所以很重要!   如果

    2024年01月18日
    浏览(43)
  • 代码随想录刷题

    704. 二分查找 27. 移除元素

    2024年01月25日
    浏览(47)
  • 代码随想录 - 链表

    链表是一种通过指针串联的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。 链表的类型  1、单链表  单链表中的指针域只能指向节点的下一个节点。  2、双链表 双链表:

    2024年02月13日
    浏览(40)
  • 代码随想录 图论

    目录 797.所有可能得路径  200.岛屿数量 695.岛屿的最大面积 1020.飞地的数量  130.被围绕的区域  417.太平洋大西洋水流问题  827.最大人工岛 127.单词接龙  841.钥匙和房间 463.岛屿的周长  797. 所有可能的路径 中等 给你一个有  n  个节点的  有向无环图(DAG) ,请你找出所有从

    2024年04月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包