HashSet存储元素: 使用HashSet存储数组元素,以实现O(1)时间复杂度的元素存在性检查。
遍历数组: 遍历整数数组中的每个元素。
判断连续序列起点: 对于当前元素,检查是否存在比它小1的元素。如果存在,说明当前元素不是一个连续序列的起点,跳过当前迭代。
寻找整个连续序列: 如果当前元素是连续序列的起点,使用循环递增 num 直到找到不在数组中的元素,确定整个连续序列的长度。
更新最大长度: 在寻找每个连续序列的过程中,比较当前序列的长度与之前找到的最大长度,更新最大长度。
返回结果: 返回找到的最长连续数字序列的长度。
class Solution {
public int longestConsecutive(int[] nums) {
Set<Integer> set = new HashSet<>();
for(int num:nums){
set.add(num);
}
int res = 0;
for(int num:nums){
if(set.contains(num - 1)){
continue;// 说明有比他还要小的元素
}else{
int count = 0;
while(set.contains(num++)){
count++;// 寻找所有的连续数字
}
res = res>count ? res:count;
}
}
return res;
}
}