题目链接:128. 最长连续序列 – 力扣(LeetCode)
- 核心逻辑:利用哈希集合实现O(1)查找,便于快速判断元素是否存在。只从每个连续序列的起始元素开始向后统计长度,避免重复计算。
- 代码实现
class Solution {
public int longestConsecutive(int[] nums) {
int maxLen=0;
Set<Integer> numSet=new HashSet<>();//创建hashset存放数组里的数
for(int num:nums){
numSet.add(num);
}
//遍历集合中的每个数,只有当前一个数不存在时,才可以以他为起点,向后寻找连续的数,统计长度,这样每个数最多被访问两次。
for(int num:numSet){
if(!numSet.contains(num-1)){
int currentNum=num;
int currentLen=1;
while(numSet.contains(currentNum+1)){
currentNum++;
currentLen++;
}
maxLen=Math.max(maxLen,currentLen);
}
}
return maxLen;
}
}
- 时间复杂度:O(n),每个元素最多被访问两次。哈希表插入和查找均为O(1)
- 空间复杂度:O(n),哈希表存储



