采用set对数组nums元素去重,然后遍历set元素,判断元素是否是连续序列的起始元素
如果是,则计算该元素起始序列的长度
如果不是,则跳过
因此set中每个元素只会被遍历一次
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int> uset;
int ans = 0;
for (int i = 0; i < nums.size(); i++) {
uset.insert(nums[i]);
}
for (unordered_set<int>::iterator it = uset.begin(); it != uset.end(); it++){
if(!uset.count(*it - 1)){
int tmp = *it;
int len = 1;
while(uset.count(tmp + 1)){
len++;
tmp++;
}
ans = max(ans, len);
}
}
return ans;
}
};