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

要求算法的时间复杂度为 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,注意最后一个可能是最长连续序列的一部分,所以最后要再比一次

 class Solution:
def longestConsecutive(self, nums: List[int]) -> int:
if not nums:
return 0
nums.sort()
longestSequence = 1
curStreak = 1
for i in range(1,len(nums)):
if nums[i] != nums[i-1]:
if nums[i] == nums[i-1]+1:
curStreak += 1
else:
longestSequence = max(longestSequence,curStreak)
curStreak = 1
return max(longestSequence, curStreak)

最新文章

  1. Atitit数据库层次架构表与知识点 attilax 总结
  2. C#之常见数组编码错误
  3. 2016HUAS暑假集训训练2 J - 今年暑假不AC
  4. 为什么在Mac中无法用k web运行ASP.NET 5程序
  5. EventBus (四) Sticky事件
  6. Java环境解析apk文件信息
  7. Android SharedPreferences 见解
  8. Qt的进度条设置
  9. 转:eclipse怎样修改包(package)的显示样式、格式 工具/原料
  10. CAS认证(3):验证用户信息
  11. Python进阶-继承中的MRO与super
  12. mariadb集群与nginx负载均衡配置--centos7版本
  13. 你不知道的JavaScript--Item10 闭包(closure)
  14. VI和VIM
  15. Codeforces 915G Coprime Arrays 莫比乌斯反演 (看题解)
  16. Android 8 蓝牙 扫描流程
  17. Html5画钟表盘/指针实时跳动
  18. 转载 React.createClass 对决 extends React.Component
  19. ssh 认证
  20. Asp .Net core 2 学习笔记(3) —— 静态文件

热门文章

  1. 阶段3 1.Mybatis_12.Mybatis注解开发_4 mybatis注解开发CRUD的其他操作
  2. 阶段3 1.Mybatis_09.Mybatis的多表操作_4 完成account一对一操作-建立实体类关系的方式
  3. 阶段3 1.Mybatis_08.动态SQL_02.mybatis中动态sql语句-where标签的使用
  4. robotframework的变量的使用
  5. Android下Native的so编译:使用ndk-build.cmd/.sh
  6. 安装golang web框架 gin
  7. 基于原生XMLHttpRequest封装
  8. Django-DRF组件学习-预备知识
  9. input函数以及while处理列表和字典
  10. python+selenium操作cookie