【集合】LeetCode 128. 最长连续序列
题目链接
思路
题目要求找连续序列,且时间复杂度读要求 O(n)
,可以使用集合进行实现。
代码
class Solution{
public int longestConsecutive(int[] nums){
Set<Integer> numSet = new HashSet<>();
for(int num : nums){
numSet.add(num);
}
int longestStreak = 0;
for(int num : numSet){
if(!numSet.contains(num - 1)){
int currentNum = num;
int currentStreak = 1;
while(numSet.contains(currentNum + 1)){
currentNum++;
currentStreak++;
}
longestStreak = Math.max(longestStreak, currentStreak);
}
}
return longestStreak;
}
}