leetcode 128最长连续序列

方法一:使用快排:

//排序法,时间O(nlogn),使用STL,只是验证一下思想,非正解;
class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int res=0;
        for(int i=0;i<nums.size();i++){
            int step=0,len=1;
            while(i+step!=nums.size()-1&&nums[i+step+1]-nums[i+step]<=1){
                if(nums[i+step]+1==nums[i+step+1]) len++;
                step++;
            }
            res=max(res,len);
            i+=step;
        }
        return res;
    }
};

 方法二:使用并查集如题所说达到O(n)

猜你喜欢

转载自www.cnblogs.com/joelwang/p/10876881.html