Longest Consecutive Sequence Leetcode Python

来源:互联网 发布:oracle连接mysql详解 编辑:程序博客网 时间:2024/06/07 23:27
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



0 0
原创粉丝点击