题目
思路:
按官方的思路:找出每段序列的第一个数,接着找出以这个数为首的最长连续序列,比较每个序列的长度,找出长度最长即可
找出序列第一个数:当一个数是序列第一个数,则它是没有前驱的
代码
class Solution(object):
def longestConsecutive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums = set(nums)
t = len(nums)
if t == 0 or t ==1:
return t
count = 1
for i in nums:
if i-1 not in nums:
j = 1
while i+j in nums:
j+=1
if count<j:
count = j
return count
ps:
之前一直是对原列表去重后转列表,然后再去遍历 ,一直超限 ,之后了解到 关于in用法 列表时间复杂度为O(N),而集合为O(1) 我觉得应该是这样导致,若有不对,有看到麻烦指出,多谢