class Solution {
public:
int longestConsecutive(std::vector<int>& nums) {
// 也可以用std::set<int> 运行时间翻倍
std::unordered_set<int> uset (nums.begin(), nums.end());
int res=0;
for (int i:uset){
// 找不到前一位i-1 说明i是开头 cnt从1计数
if (uset.find(i-1)==uset.end()){
int cnt=1;
// 往后循环找i+1,i+2,... 有cnt个连续数
while(uset.find(i+1)!=uset.end()){
i++;
cnt++;
} // 等价 while(uset.find(++i)!=uset.end())cnt++;
res = std::max(res, cnt);
}
}
return res;
}
};