博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode--128--最长连续序列(python)
阅读量:5072 次
发布时间:2019-06-12

本文共 1136 字,大约阅读时间需要 3 分钟。

给定一个未排序的整数数组,找出最长连续序列的长度。

要求算法的时间复杂度为 O(n)。

示例:

输入: [100, 4, 200, 1, 3, 2]

输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。

暴力超时。。。

class Solution:    def longestConsecutive(self, nums: List[int]) -> int:        longestSequence = 0        for num in nums:            curNum = num            streak = 1                        while curNum +1 in nums:                curNum += 1                streak += 1            longestSequence = max(longestSequence,streak)        return longestSequence

先排序,在有序list中,判断前一个数字是否比后一个少1,注意最后一个可能是最长连续序列的一部分,所以最后要再比一次

1 class Solution: 2     def longestConsecutive(self, nums: List[int]) -> int: 3         if not nums: 4             return 0 5         nums.sort() 6         longestSequence = 1 7         curStreak = 1 8         for i in range(1,len(nums)): 9             if nums[i] != nums[i-1]:10                 if nums[i] == nums[i-1]+1:11                     curStreak += 112                 else:13                     longestSequence = max(longestSequence,curStreak)14                     curStreak = 115         return max(longestSequence, curStreak)

 

转载于:https://www.cnblogs.com/NPC-assange/p/11531443.html

你可能感兴趣的文章
重构代码 —— 函数即变量(Replace temp with Query)
查看>>
vmware tools 的安装(Read-only file system 的解决)
查看>>
Bootstrap栅格学习
查看>>
程序员的数学
查看>>
聚合与组合
查看>>
数据库图片存储也读取
查看>>
jQuery如何获得select选中的值?input单选radio选中的值
查看>>
粘贴板工具,剪切板工具
查看>>
设计模式 之 享元模式
查看>>
查看数据库是否有死锁
查看>>
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
15 FFT及其框图实现
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
3.0.35 platform 设备资源和数据
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>