🌕🌕 128. 最长连续序列
2022年10月10日
- algorithm
🌕🌕 128. 最长连续序列
难度: 🌕🌕
问题描述
解法
class Solution {
public int longestConsecutive(int[] nums) {
// 思路:
// 借助 HashSet ,存储所有元素
// 遍历时,判断是否存在前一个元素,如果有,那么之前肯定遍历过当前元素,跳过
// 只有是连续序列的首个元素,才有特权,往后遍历直到不连续
int len = nums.length;
HashSet<Integer> set = new HashSet<>();
for(int i : nums) {
set.add(i);
}
// 再次遍历,判断是否有前面的值
int res = 0;
for(int i = 0; i < len; i ++) {
int cur = nums[i];
if(set.contains(cur - 1)) {
continue;
}
// 不存在上一个元素,说明如果存在连续子序列,当前值为序列首元素
int count = 1;
while(set.contains(cur + 1)) {
count ++;
cur ++;
}
res = Math.max(res, count);
}
return res;
}
}