首页 > 编程语言 >代码随想录算法训练营day31| 56. 合并区间 738.单调递增的数字

代码随想录算法训练营day31| 56. 合并区间 738.单调递增的数字

时间:2024-10-30 22:10:47浏览次数:1  
标签:数字 int 56 随想录 day31 flag intervals strn result

学习资料:https://programmercarl.com/0056.合并区间.html#算法公开课

贪心PART5
over

学习记录:
56.合并区间(也是找重叠区间,但是是跟result[-1]比,只用比右边界;更新result[-1][1]为更大值)

点击查看代码
class Solution(object):
    def merge(self, intervals):
        """
        :type intervals: List[List[int]]
        :rtype: List[List[int]]
        """
        # 还是重叠问题,但是有点区别,因为要合并重叠区域
        # 先把数组第一个放到新建立的result数组中,然后向后遍历数组,相当于i的左边界与i-1的右边界比较,但是这里的i-1变成了result[-1]。先排序所以当发生重叠时,i-1的左边界一定更小就保持不变,而要比较i-1和i的右边界,选择比较大的值赋给i-1的右边界,就完成了合并工作。
        result = []
        intervals.sort(key=lambda x:x[0])  # 按左边界排序
        if not intervals:   # 先处理数组为空的情况
            return result
        result.append(intervals[0])  # 先把数组第一个元素给result
        for i in range(1, len(intervals)):  # 从第二个数开始遍历
            if result[-1][1] >= intervals[i][0]:    # 有重叠区间
                result[-1][1] = max(result[-1][1], intervals[i][1])   # 合并操作
            else:
                result.append(intervals[i])  # 没有重叠,就把元素加到结果集里
        return result

738.单调递增的数字(result, flag;如果左数比右数大,则左数-1,右数及之右都变为9;把数字变成字符串来遍历,结果再变成int)

点击查看代码
class Solution(object):
    def monotoneIncreasingDigits(self, n):
        """
        :type n: int
        :rtype: int
        """
        # 思路太妙了
        # 1 从个位数数字向前遍历,举例:若十位数数字>个位数数字,不符合递增,把十位数数字-1,个位数数字变为9
        # 2 当某个数变为9,记录此数位置为flag,他右边的位置的数字都变成9

        strn = str(n)
        flag = len(strn)

        for i in range(len(strn)-1, 0, -1):  # 从右向左遍历
            if strn[i]<strn[i-1]:            # 左数>右数,不满足递增
                flag = i                     # 记录右数位置,因为等会要把右数变为9
                strn = strn[:i-1] + str(int(strn[i-1])-1) + strn[i:]  # 改变数字字符串,把左数-1
        
        for i in range(flag, len(strn)):  # 把flag以及右部位置的数字都变成9
            strn = strn[:i] + '9' + strn[i+1:]   # 改变数字字符串
        
        return int(strn)    

PS:今天宣讲收获两个杯子,安逸,太忙了,第三题以后看,贪心结束啦
忙的今天是啥天气都没注意到,吃了个减脂餐美味就是不顶饿,超辣的燃面不好吃

标签:数字,int,56,随想录,day31,flag,intervals,strn,result
From: https://www.cnblogs.com/tristan241001/p/18516712

相关文章

  • 代码随想录算法训练营第十二天| 226.翻转二叉树、101. 对称二叉树、104.二叉树的最大
    226.翻转二叉树题目链接:.-力扣(LeetCode)文章讲解:代码随想录视频讲解:听说一位巨佬面Google被拒了,因为没写出翻转二叉树|LeetCode:226.翻转二叉树_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com......
  • 代码随想录算法训练营第十三天| 110.平衡二叉树、257. 二叉树的所有路径、404.左叶子
    110.平衡二叉树题目链接:.-力扣(LeetCode)文章链接:代码随想录视频链接:后序遍历求高度,高度判断是否平衡|LeetCode:110.平衡二叉树_哔哩哔哩_bilibili《代码随想录》算法公开课开讲啦!快来打卡!本期视频的文字讲解版在「代码随想录」刷题网站:programmercarl.com,这里刷题顺序,详......
  • 代码随想录 -- 动态规划 -- 01背包理论基础
    46.携带研究材料(第六期模拟笔试)思路:dp[i][j]含义:在(0,i)之间任意选取物品放入容量为j的背包中,使背包的价值最大。递推公式:当前背包容纳不下第i个物品,不选第i个物品,此时背包的价值:dp[i][j]=dp[i-1][j]。当前背包容纳得下第i个物品时,且选择第i个物品,此时背包的价值:dp[i][j......
  • 566. 火影忍者动漫主题网页 大学生期末大作业 Web前端网页制作 html+css
    目录一、网页概述二、网页文件 三、网页效果四、代码展示1.html2.CSS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐欢迎光临仙女的网页世界!这里有各行各业的Web前端网页制作的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这么好......
  • 瑞芯微RK3566/RK3568 Android11下该如何默认屏蔽导航栏/状态栏?看这篇文章就懂了
    本文介绍瑞芯微RK3566/RK3568在Android11系统下,默认屏蔽导航栏/状态栏方法,使用触觉智能PurplePiOH鸿蒙开发板演示,搭载了瑞芯微RK3566芯片,类树莓派设计,Laval官方社区主荐,已适配全新OpenHarmony5.0Release系统,感兴趣的小伙伴可以了解下!源码修改源码修改说明:"-"表示需要去掉的内......
  • Oracle、MySQL、ClickHouse的通用AES256加解密如何实现?
     Oracle、MySQL、ClickHouse的通用AES256加解密如何实现? 前段时间研究了加密算法aes,写了个文档,分享到博客上来。防。1  说明应XXX安全生产需求,对目标库目标表业务字段敏感信息进行加密密文存放,查询时通过解密得到明文进行数据使用,要求使用AES256。目前公司所使用主要......
  • 代码随想录刷题学习日记
    仅为个人记录复盘学习历程,解题思路来自代码随想录代码随想录刷题笔记总结网址:代码随想录222.完全二叉树的节点个数给出一个完全二叉树,求出该树的节点个数。提供参数:根结点root主要操作:遍历所有节点,记录节点数。代码(递归法)大致如下:publicintcountNodes(TreeNoder......
  • AB罗克韦尔1756-PA75/A 和1756-PA75R/A有什么区别
    罗克韦尔模块在工业自动化领域具有显著的优势,这些优势主要体现在以下几个方面:一、高度集成化与模块化设计罗克韦尔模块设计紧凑且功能强大,能够集成多种控制功能于一体,大大简化了系统设计和布线工作。模块化的设计使得系统易于扩展和升级,用户可以根据实际需求灵活配置和增减模......
  • 代码随想录算法训练营第十三天
    1二叉树的理论基础文章链接:代码随想录视频链接:关于二叉树,你该了解这些!|二叉树理论基础一网打尽,二叉树的种类、二叉树的存储方式、二叉树节点定义、二叉树的遍历顺序_哔哩哔哩_bilibili1.1二叉树的种类满二叉树所有节点处的值都排满了,没有空的完全二叉树只有在最后一......
  • 代码随想录算法训练营第六天| leetcode242.有效的字母异位词、leetcode349.两个数组的
    1.leetcode242.有效的字母异位词题目链接:242.有效的字母异位词-力扣(LeetCode)文章链接:代码随想录视频链接:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词哔哩哔哩bilibili自己的思路:首先就是对字符串进行分开成一个一个单独的字母,然后使用列表存储这些数据,再对......