描述:
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
例子:
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.
要求:
Your algorithm should run in O(n) complexity.
分析
从未排序的数组中寻找最长的连续的数字,必然要循环一遍所有的数字,因为连续,所以以pop出来的数字为基准,向左右扩散,直到没有连续的,利用了pop和in的特性。
代码:
class Solution:
def longestConsecutive(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
final_length=0
num_dict=dict()
maxlen_cur=0
while nums:
m=n=nums.pop()
maxlen_cur=1
while m-1 in nums:
nums.remove(m-1)
maxlen_cur+=1
# m-=1
m-=1
while n+1 in nums:
nums.remove(n+1)
maxlen_cur+=1
n+=1
final_length=max(maxlen_cur,final_length)
return final_length
if __name__=='__main__':
a=[100, 4, 200, 1, 3, 2]
st=Solution()
out=st.longestConsecutive(a)
print(out)