128. 最长连续序列

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

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

示例:

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

输出: 4

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

class Solution {
public int longestConsecutive(int[] nums) {
Set<Integer> numsSet = new HashSet<>();
for (Integer num : nums) {
numsSet.add(num);
}
int longest = 0;
for (Integer num : nums) {
if (numsSet.remove(num)) {
// 向当前元素的左边搜索,eg: 当前为100, 搜索:99,98,97,...
int currentLongest = 1;
int current = num;
while (numsSet.remove(current - 1)) current--;
currentLongest += (num - current);
// 向当前元素的右边搜索,eg: 当前为100, 搜索:101,102,103,...
current = num;
while(numsSet.remove(current + 1)) current++;
currentLongest += (current - num);
// 搜索完后更新longest.
longest = Math.max(longest, currentLongest);
}
}
return longest;
}
}

最新文章

  1. phantomjs 双向认证,访问nginx,https
  2. SqlServer事务回滚(2)
  3. Java基础知识强化90:Date类之Data类中日期和毫秒相互转换
  4. 零积分下载,2014年辛星mysql教程秋季版第一本已经完工,期待您的支持
  5. Deep Q-Network 学习笔记(一)—— Q-Learning 学习与实现过程中碰到的一些坑
  6. 构建混合应用方式之WCF中继
  7. 使用“万能数据库查询分析器”的Windows 7、Windows 8、Windows 10的用户须知
  8. 可能是史上最全的机器学习和Python(包括数学)速查表
  9. jxl应用事例
  10. CentOS开启telnet服务
  11. MySQL大小写敏感的解决方案
  12. sublime text 3中安装ctags支持函数跳转,安装convertToUtf8支持中文步骤[工具篇]
  13. xca自签发证书解决chrome浏览器证书不可信问题记录
  14. CentOS下nginx+php的配置及nginx开机启动配置
  15. Selenium+Java自动化测试的方法
  16. 3-D crustal model transfer to cdl format
  17. mongodb的分片(2)
  18. Linux系统快速查找文件
  19. mysql 免安装版文件含义及作用
  20. Eclipse环境下配置Tomcat,并且把项目部署到Tomcat服务器上

热门文章

  1. 设计模式之GOF23中介者模式
  2. [hdu5448 Marisa’s Cake]多边形面积,公式化简
  3. [hdu5316]线段树
  4. java -&gt;IO流_序列化流与反序列化流
  5. docker 垃圾回收机制
  6. Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像
  7. layui菜单点击刷新,自适应
  8. Django之钩子Hook方法
  9. python3.x 基础四:目录获取及目录规范
  10. 理解javascript中的连续赋值