欢迎光临
我们一直在努力

力扣刷题笔记——128.最长连续序列

题目链接: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),哈希表存储

赞(0)
未经允许不得转载:171主机测评 » 力扣刷题笔记——128.最长连续序列
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址