Level:

  Hard

题目描述:

Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

Your algorithm should run in O(n) complexity.

Example:

Input: [100, 4, 200, 1, 3, 2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.

思路分析:

  设置一个hashset,保存数组中出现的值,然后遍历hashset,每访问到一个值num,我们查看num-1,和num+1是否在集合中,如果存在那我们可以继续查找num-2,和num+2是否存在,我们按照这种方法查找,直到要查找的数不存在,可以计算出一个连续的序列长度,对集合中每个元素进行上述操作,最后得出一个最长的连续序列。

代码:

public class Solution{
public int longestConsecutive(int []nums){
if(nums==null||nums.length==0)
return 0;
HashSet<Integer>set=new HashSet<>();
int res=0; //记录结果
for(int n:nums)
set.add(n);
while(!set.isEmpty()){
int num=getfirst(set);
set.remove(num);
int left=0;//记录当前num向左能延伸的距离
while(set.contains(num-1)){
left++;
set.remove(num-1);
num--;
}
int right=0; //记录当前num向右能延伸的距离
num=num+left;
while(set.contains(num+1)){
right++;
set.remove(num+1);
num++;
}
res=Math.max(res,left+right+1);
}
return res;
}
public int getfirst(HashSet<Integer>set){//返回集合中第一个元素
for(int num:set)
return num;
return 0;
}
}

最新文章

  1. JAVA开发错误总结(仅记录遇到的错误---后续不断更新......)
  2. 使用Keil uVision下载hex文件
  3. 。net 添加或获取文件关联
  4. C# int转byte[],byte[]转int
  5. linux基础命令学习五(软件包管理、下载管理)
  6. linux 全自动提权 exp perl脚本
  7. 基于HCE移动支付研究报告
  8. 在Mac OS X系统下 用dd命令将iso镜像写入u盘
  9. USACO 1.3.1
  10. SVG的基础使用
  11. 在Docker中运行asp.net core 跨平台应用程序
  12. awk说明书(转)
  13. SSM实现秒杀系统案例
  14. 错误:软件包:3:docker-ce-18.09.4-3.el7.x86_64 (docker-ce-stable) 需要:container-selinux &gt;= 2.9
  15. keras常见参数input_dim、input_length理解
  16. Java复习总结——数据类型
  17. PHP 日期时间类 Carbon 的常见用法
  18. RAMOS_XP制作教程
  19. javase中javax源码下载地址
  20. springboot结合jwt实现基于restful接口的身份认证

热门文章

  1. int型、char*、string、的swap算法
  2. java中的Excel导出功能
  3. AGC036C GP 2
  4. FastDFS搭建文件管理系统
  5. [CF846E]Chemistry in Berland题解
  6. linux发版
  7. xpath进阶
  8. EZOJ #374学习
  9. P1199三国游戏
  10. Integer自动装箱和拆箱