- 去重:将输入列表转换为集合以去除重复的元素,并提高查找效率。
- 初始化:设置
longest_count
为0,用于记录最长的连续序列长度。 - 寻找序列起点:
- 遍历集合中的每个数字,检查是否是某个连续序列的起点(即前一个数字不在集合中)。
- 计算序列长度:
- 从起点开始,连续查找下一个数字,直到连续序列断裂,更新
current_count
。
- 从起点开始,连续查找下一个数字,直到连续序列断裂,更新
- 更新最大长度:比较当前连续序列长度和已记录的最长长度,更新
longest_count
。 - 返回结果:最终返回最长连续序列的长度。
class Solution: def longestConsecutive(self, nums: List[int]) -> int: #列表转换为集合,去除重复元素 nums_set=set(nums) longest_count=0 #遍历集合中每个数字 for num in nums_set: #当前数字是连续序列的开始时进行处理 #判断num的前一个数字num-1,如果num-1不在集合中,则num是某个连续序列的第一个数字 if num-1 not in nums_set: #从当前数字开始,寻找最长连续序列 cur_num=num cur_count=1 #检查当前数字之后的连续数字 while cur_num+1 in nums_set: cur_num+=1 cur_count+=1 #更新最长序列的长度 longest_count=max(longest_count,cur_count) return longest_count
12-28
617
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-07
254
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)