leetcode

128.最长连续序列

力扣链接

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;
    }
};