leedcode-汇总区间

自己写的:

复制代码
class Solution:
    def summaryRanges(self, nums):
        my_li = []  # 创建一个空列表用于存储结果
        if not nums:  # 如果输入列表为空
            return my_li  # 返回空列表
        if len(nums) == 1:  # 如果输入列表只有一个元素
            my_li.append(f"{nums[0]}")  # 将该元素添加到结果列表中
        start = nums[0]  # 初始化区间起始值为列表的第一个元素
        for i in range(len(nums) - 1):  # 遍历列表元素,注意遍历范围是长度减一
            if nums[i] != nums[i + 1] - 1:  # 如果当前元素与下一个元素不连续
                end = nums[i]  # 结束值为当前元素
                if start == end:  # 如果起始值等于结束值
                    my_li.append(f"{start}")  # 添加单个值到结果列表
                if start != end:  # 如果起始值不等于结束值
                    my_li.append(f"{start}->{end}")  # 添加区间到结果列表
                start = nums[i + 1]  # 更新起始值为下一个元素

                if i == len(nums) - 2:  # 如果已经到达倒数第二个元素
                    my_li.append(f"{nums[-1]}")  # 直接添加最后一个元素到结果列表
            if nums[i] == nums[i + 1] - 1:  # 如果当前元素与下一个元素连续
                if i == len(nums) - 2:  # 如果已经到达倒数第二个元素
                    end = nums[-1]  # 结束值为最后一个元素
                    my_li.append(f"{start}->{end}")  # 添加起始值到结束值的区间到结果列表

        return my_li  # 返回结果列表
复制代码

 双指针:

复制代码
from typing import List

class Solution:
    def summaryRanges(self, nums: List[int]) -> List[str]:
        # 定义一个内部函数,用于生成区间表示字符串
        def f(i: int, j: int) -> str:
            # 如果区间只有一个元素,返回单个数字的字符串表示
            # 否则返回起始值到结束值的区间表示字符串
            return str(nums[i]) if i == j else f'{nums[i]}->{nums[j]}'

        i = 0  # 初始化起始索引
        n = len(nums)  # 获取列表长度
        ans = []  # 创建一个空列表用于存储结果
        while i < n:  # 循环直到遍历完所有元素
            j = i  # 初始化结束索引为起始索引
            # 循环直到找到不连续的数字或到达列表末尾
            while j + 1 < n and nums[j + 1] == nums[j] + 1:
                j += 1  # 更新结束索引
            ans.append(f(i, j))  # 将区间表示字符串添加到结果列表
            i = j + 1  # 更新起始索引为下一个区间的起始索引
        return ans  # 返回结果列表
复制代码

 

posted @   Junior_bond  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示