首页 > 其他 > 详细

128 Longest Consecutive Sequence

时间:2015-07-07 10:49:01      阅读:245      评论:0      收藏:0      [点我收藏+]

这道题一开始无从下手,想到找到用hashtable,这样查询没个数是否在List中只需要O(1)时间。 

以上是第一步, 接下来的想法就比较自然, 将每个数都当成可能的起始点进行测试。待测试的起始点为n,如果n-1在set中,则n必不为起始数字,可以continue优化运行时间

代码中使用set来实现hashtable的作用, 需要O(n)时间。 每一次查询 最多需要O(k)时间, 

总复杂度即为O(n)+O(k) = O(n)

class Solution:
    # @param {integer[]} nums
    # @return {integer}
    def longestConsecutive(self, nums):
        nums = set(nums)
        ans = 0
        for n in nums:
            if n-1 in nums:
                continue
            else:
                tmpN = n
                tmpL = 0
                while tmpN in nums:
                    tmpL += 1
                    tmpN += 1
                ans = max(ans, tmpL)
        return ans

 

128 Longest Consecutive Sequence

原文:http://www.cnblogs.com/dapanshe/p/4626263.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!