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