class Solution:
### 0130 哈希表遍历(44 ms,15.6 MB)
def longestConsecutive(self, nums: List[int]) -> int:
if not nums: return 0
max_cnt = 1 # 至少从1开始
st = set(nums)
# 遍历每一个数
for num in nums:
# 若当前数不存在比它小1的数,则进行搜索
if num - 1 not in st:
# 统计从当前数开始的最大长度,至少从1开始
cur_cnt = 1
next_num = num
# 只有哈希表中还存在下一个数,则循环累加长度
while next_num + 1 in st:
cur_cnt += 1
next_num += 1
max_cnt = max(max_cnt, cur_cnt)
return max_cnt
- 返回最长数字连续序列
def longestConsecutive(nums) -> int:
if not nums: return 0
max_cnt = 1 # 至少从1开始
st = set(nums)
# 遍历每一个数
for num in nums:
# 若当前数不存在比它小1的数,则进行搜索
if num - 1 not in st:
# 统计从当前数开始的最大长度,至少从1开始
cur_cnt = 1
next_num = num
# 只有哈希表中还存在下一个数,则循环累加长度
while next_num + 1 in st:
cur_cnt += 1
next_num += 1
if max_cnt < cur_cnt:
max_cnt = cur_cnt
ls = list(range(num, num + max_cnt))
return max_cnt, ls