1. 具体题目

给定一个未排序的整数数组,找出最长连续序列的长度。要求算法的时间复杂度为 O(n)。

示例:

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

2. 思路分析

由于题目中不要求连续序列中的元素在原数组中是有序的,对于一个数只要查找数组中是否有与其相邻的数即可,所以考虑将元素存入HashSet中,实现 O(1)时间的查询。

3. 代码

 public int longestConsecutive(int[] nums) {
HashSet set = new HashSet();
int longest = 0;
for(int num : nums){
set.add(num);
}
for(int num : nums){
if(set.remove(num)){
int count = 1;
int current = num;
while(set.remove(--current)) count++;
current = num;
while(set.remove(++current)) count++;
longest = Math.max(longest, count);
}
}
return longest;
}

最新文章

  1. SQL Server 通过备份文件初始化复制
  2. JS中的进制转换以及作用
  3. redis事务
  4. 移动 Web 开发技巧之(后续)
  5. 桂电在linux、Mac OS环境下使用出校器(支持2.14)
  6. 我的CSS样式记事本(1)
  7. Yii与表单交互的三种模式2
  8. 安卓开发28:自定义View类
  9. 用html5调取谷歌地图获取位置
  10. GDAL1.11版本对SHP文件索引加速测试
  11. web服务器软件
  12. java文件转发
  13. Windows Phone开发手记-WinRT下自定义圆形ItemsControl
  14. django -- verbose_name的对数据库层面的影响
  15. Spring是什么、spring容器、Spring三大核心思想DI(依赖注入)、IOC(控制反转)、AOP(面向切面编程)
  16. redis4.0.10安装与常用命令
  17. PAT 1094 The Largest Generation[bfs][一般]
  18. Android之MVC模式
  19. CSU-ACM2018暑期训练7-贪心
  20. C#练习DataReader

热门文章

  1. new运算符工作原理(new运算符的伪码实现)
  2. GDB can't continue if no space left
  3. UVA 212 Use of Hospital Facilities
  4. 调用WPF程序时传入参数
  5. Maven远程仓库地址
  6. MATLAB图像uint8,uint16,double, rgb转灰度解释
  7. Python之小测试:用正则表达式写一个小爬虫用于保存贴吧里的所有图片
  8. 移动端(视口(meta),像素比,二倍图(图片,背景图,精灵图),css初始化(normalize.css),特殊样式,常见屏幕尺寸)
  9. Codeforces 19E&BZOJ 4424 Fairy(好题)
  10. 异步ajax请求数据处理