当判断完毕当前数字n的前一个n-1 不在集合中之后
为何需要一个current nums 来储存nums的值? 直接用n不可以吗
以下是lc标准题解
def longestConsecutive(self, nums: List[int]) -> int:
longest_streak = 0
num_set = set(nums)
for num in num_set:
if num - 1 not in num_set:
current_num = num #为什么需要这步
current_streak = 1
while current_num + 1 in num_set:
current_num += 1
current_streak += 1
longest_streak = max(longest_streak, current_streak)
return longest_streak
以下是我的题解 报错Time Limit Exceeded
def longestConsecutive(self, nums: List[int]) -> int:
nums = set(nums)
longest = 0
for n in nums:
curLength = 0
if n-1 not in nums: #该数字的前一个连续数字不在表里 也就是说当前数字可以当序列开头
curLength += 1
while n+1 in nums: #计数 当前数字的+1 +2...
curLength += 1
longest = max(longest,curLength) #如果新序列长度更大 更新最长值
return longest