Longest Consecutive Sequence Leetcode Python

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.

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



你可能感兴趣的:(LeetCode,python,Graph)