leetcode-剑指 Offer II 119. 最长连续序列

 

 

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        if(nums.size()==0)
            return 0;
        sort(nums.begin(), nums.end());
        // 去除重复元素, 不然遇到0 1 1 2 ,其实最长序列为3,但是计算的为2
        nums.erase(unique(nums.begin(), nums.end()), nums.end()); 

        int i = 0;
        int j = 0;
        int res = INT_MIN;
        while(j<nums.size()){
            while((j+1)<nums.size()&&nums[j+1]-nums[j]==1){
                j++;
            }
            res = max(res, j-i+1);
            i = j+1;  // 更新窗口起点
            j++;  // 扩大窗口
        }
        return res;
    }
};

 

posted @ 2021-09-28 15:43  三一一一317  阅读(41)  评论(0)    收藏  举报