题目描述:
思路:使用哈希表对数组中元素建立映射,使得查找得时间复杂度为O(1),然后遍历数组中每一个元素x,看是否存在x+1,x+1.....的元素,求得最大长度。
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int>num_set;
//对原数组中的元素去重
for(const int& num:nums){
num_set.insert(num);
}
int max_len=0;
for(const int&num:num_set){
//排除已经遍历过的元素
if(!num_set.count(num-1)){
int currentNum=num;
int currentLen=1;
while(num_set.count(currentNum+1)){
currentNum+=1;
currentLen+=1;
}
max_len=max(max_len,currentLen);
}
}
return max_len;
}
};