【Day27】LeetCode:56. 合并区间,738. 单调递增的数字

文章目录

  • [LeetCode:56. 合并区间](#LeetCode:56. 合并区间)
  • [LeetCode:738. 单调递增的数字](#LeetCode:738. 单调递增的数字)

LeetCode:56. 合并区间

https://leetcode.cn/problems/merge-intervals/

思路

  1. 按区间左端点升序排序 intervals
  2. 用区间 [last_start, last_end] 记录上一个正在合并的区间。然后遍历数组:
    (1)如果当前区间和正在合并的区间重叠:如果完全重叠就直接跳过;如果没有完全重叠,则更新正在合并的区间为 [last_start, end]
    (2)如果当前区间和正在的合并的区间不重叠:则说明上一个正在合并的区间可以合并结束,将合并后的区间加入结果,然后将当前区间作为正在合并的区间。
  3. 最后将最后一个正在合并的区间添加进结果。

解答

python 复制代码
class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        n = len(intervals)
        intervals.sort(key=lambda x: x[0]) # 按区间左端点升序排序
        results = []

        last_start = intervals[0][0]
        last_end = intervals[0][1]

        for index, interval in enumerate(intervals[1:]):
            start = interval[0]
            end = interval[1]

            if start <= last_end and end > last_end: # 重叠且不完全覆盖
                    last_end = end
            elif start > last_end: # 完全不重叠,插入上一个
                results.append([last_start, last_end])
                last_start = start
                last_end = end
        
        results.append([last_start, last_end]) # 插入最后一个
        
        return results

LeetCode:738. 单调递增的数字

https://leetcode.cn/problems/monotone-increasing-digits/description/

思路

倒序遍历数组,如果 nums[i-1] > nums[i] ,即出现递减,则标记 flag = i ,使得其后所有数都为9,然后 nums[i-1]-- 。(例如出现 324 ,因为 3 > 2 ,所以标记数字 2 ,前一位 - 1,得到 299)。

解答

python 复制代码
class Solution:
    def monotoneIncreasingDigits(self, n: int) -> int:
        nums = list(str(n))

        flag = len(nums) # 标记从哪一位开始后面都是9

        for i in range(len(nums) - 1, 0, -1): # 倒序遍历
            if nums[i-1] > nums[i]:
                flag = i
                nums[i-1] = str(int(nums[i-1]) - 1)
        
        for i in range(flag, len(nums)):
            nums[i] = '9'

        return int("".join(nums))
相关推荐
灰灰勇闯IT3 小时前
CANN Graph Engine 执行链路:一张计算图如何跑上昇腾 NPU
人工智能·深度学习·算法
Data_Journal3 小时前
什么是数据采购,它究竟如何运作?
大数据·开发语言·数据库·人工智能·python
Gigavision3 小时前
SEED-VII 数据集介绍:面向七类情绪识别的 EEG 与眼动多模态数据集
人工智能·python·算法·脑机接口
烟雨江南aabb3 小时前
Python第七弹:爬虫篇:BeautifulSoup库
爬虫·python·beautifulsoup
KaMeidebaby4 小时前
卡梅德生物技术快报|Fab 抗体文库构建标准化实验流程与数据复盘
服务器·前端·数据库·人工智能·算法
枫叶v.4 小时前
Scrapling 入门:一个现代 Python 网页采集框架
开发语言·python
想唱rap4 小时前
IO多路转接之epoll
linux·运维·服务器·数据库·网络协议·算法·http
四方云4 小时前
Python 轮插桩、写进调试:通俗+专业解释
开发语言·python
码界筑梦坊4 小时前
127-基于Flask的德国银行信贷客户数据可视化分析系统
开发语言·python·信息可视化·数据分析·flask·毕业设计
zcg19424 小时前
图像分割——常用数据和算法
算法