当前位置: 首页 > article >正文

day36 56.合并区间 738.单调递增的数字

56. 合并区间

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

示例 1:

输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

提示:

  • 1 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 104

第一种方法:

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key = lambda x: x[0]) # 按照左边界进行排序
        if len(intervals) == 0:
            return 0
        
        result = [intervals[0]] # 直接将第一个区间放进结果集

        for i in range(1, len(intervals)):
            # 判断重叠
            if intervals[i][0] <= result[-1][1]:
                # 合并区间,只需更新结果集最后一个区间的右边界,因为根据前面的排序,左边界已经是升序
                result[-1][1] = max(intervals[i][1], result[-1][1])
            else:
                result.append(intervals[i])

        return  result 

738. 单调递增的数字 

当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。

给定一个整数 n ,返回 小于或等于 n 的最大数字,且数字呈 单调递增 。

示例 1:

输入: n = 10
输出: 9

示例 2:

输入: n = 1234
输出: 1234

示例 3:

输入: n = 332
输出: 299

提示:

  • 0 <= n <= 109

第一种方法(贪心算法):

class Solution:
    def monotoneIncreasingDigits(self, n: int) -> int:
        # 将整数转换为字符串
        strNum = str(n) 
        # flag用来标记赋值9从哪里开始
        # 设置为字符串长度,为了防止第二个for循环在flag没有被赋值的情况下执行
        flag = len(strNum)

        # 从右往左遍历
        for i in range(len(strNum) - 1, 0, -1):
            if strNum[i - 1] > strNum[i]:
                flag = i # 更新flag,记录开始修改的位置
                # 将前一个字符减1
                strNum = strNum[:i - 1] + str(int(strNum[i - 1]) - 1) + strNum[i:]

        for i in range(flag, len(strNum)):
            # 将flag位置及之后的字符都修改为9,以保证最大的递增数字
            strNum = strNum[:i] + '9' + strNum[i + 1:]
        
        return int(strNum)

 


http://www.kler.cn/news/351057.html

相关文章:

  • 基于django的个人相册日记管理系统
  • git 报错 SSL certificate problem: certificate has expired
  • 从一个简单的计算问题,看国内几个大语言模型推理逻辑能力
  • 机器视觉运动控制一体机在DELTA并联机械手视觉上下料应用
  • MySQL - Navicat自动备份MySQL数据
  • 《Linux从小白到高手》综合应用篇:深入理解Linux常用关键内核参数及其调优
  • Elasticsearch文档操作
  • 如何保证Redis和数据库的数据一致性
  • 从一个事故中理解 Redis(几乎)所有知识点
  • ChatGPT丨R语言在生态环境数据统计分析、绘图、模型中的应用
  • 常见ElasticSearch 面试题解析(上)
  • 如何实现安川MP3300运动控制器与西门子1200系列PLC进行ModbusTCP通讯
  • 机器学习探索性数据分析 (EDA)
  • git协同开发流程
  • 中波长线天线耦合的一个方法
  • Java程序发送邮件email
  • API 接口测试步骤
  • 如何从头训练大语言模型: A simple technical report
  • DNS安全概述
  • lua脚本使用cjson转换json时,空数组[]变成了空对象{}
  • 016集——c# 实现CAD类库 与窗体的交互(CAD—C#二次开发入门)
  • Anaconda3与PyCharm安装配置
  • 第十四届中国国际健康产品展览会在沪举办,无限未来品牌大放异彩
  • 界面组件DevExpress WPF v24.1亮点 - 支持全新的字体图标图像
  • 每天10个js面试题(五)
  • 基于cloudreve(Docker应用)搭建网盘服务,用于目录的分享和在线预览。