题目描述:
思路分析:
对于 nums 中的元素 x,以 x 为起点,不断查找下一个数 x+1,x+2,⋯ 是否在 nums 中,并统计序列的长度。
由于需要不断查找元素是否在数组中,可以把数组中的元素存到哈希表中,这样查找的效率会变成O(1),于是首先定义一个哈希表,把数组中的元素存入进去,在遍历哈希表的数,不断尝试找到最大连续字数组中最小的数组和最大的数字,两数之差加1就是最大连续子数组的长度。
代码:
java
class Solution {
public int longestConsecutive(int[] nums) {
int ans=0;
Set<Integer> a=new HashSet();
for(int b:nums){
a.add(b);
}
for(int b:a){
int n=b;
if(a.contains(n-1)){
continue;
}
while(a.contains(n+1)){
n++;
}
ans=Math.max(ans,n-b+1);
}
return ans;
}
}