Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.
For example,
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.
这道题要用图的搜索算法来解决,找到图的一点,从两边开始搜索,并计算。 当最后得到的count>maxlen的时候就将maxlen=count
最后返回maxlen
we can use a hashtable to search the value. everytime start from left and right. take count on the consecutive sequences and then compare the maxlen and count, if the maxlen is no greater than count we pass count to maxlen.
class Solution:
# @param num, a list of integer
# @return an integer
def longestConsecutive(self, num):
dict={}
maxlen=1
for element in num:
dict[element]=True
for element in num:
cn=1
prev=element-1
while prev in dict and dict[prev]:
dict[prev]=False
cn=cn+1
prev=prev-1
next=element+1
while next in dict and dict[next]:
dict[next]=False
cn=cn+1
next=next+1
if cn > maxlen:
maxlen=cn
return maxlen