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 # 返回结果列表
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具