一旦找到序列终点,计算当前连续序列长度,更新结果为 res = max(res, seq_length)
🛠️代码
classSolution:deflongestConsecutive(self, nums: List[int])->int:
res =0# 初始化结果为 0
nums_set =set(nums)# 通过集合筛选唯一数字,避免重复计算同一数字for num in nums_set:# 遍历数集中的每一个数字if num -1notin nums_set:# 如果 num -1 不在数集中,说明 num 是连续序列的第一位
seq_length =1# 序列长度初始化为 1
next_num = num +1# 下一个连续数字初始化为 num + 1while next_num in nums_set:# 只要下一个连续数字在数集中
seq_length +=1# 序列长度 +1
next_num +=1# 下一个连续数字
res =max(res, seq_length)# 更新结果return res # 返回最终结果
一个数组的连续序列非常多,首先需要确定如何【不重复、不遗漏】地找到所有的连续序列。对于数组中的一个数字 num,如果 num - 1 不在数组中,那么这个数字 num 就是连续序列的起点。一旦找到连续序列起点,就开始向后查找连续序列终点。对于数组中的一个数字 num,如果 num + 1 不在数组中,那么这个数字 num 就是连续序列的终点。除此之外,为了对同一个数字进行重复计算,先把数组转化为集合。