[leetcode][128. 最长连续序列]

给定一个未排序的整数数组,找出最长连续序列的长度。

要求算法的时间复杂度为 O(n)

示例:

输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。

解答:

菜鸟解法,排序+去重+计算最大连续个数,提交结果居然还是100%靠前

class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        int size=nums.size();
        if(size<=0) return 0;
        sort(nums.begin(),nums.end());
        unique(nums.begin(),nums.end());
        int maxval=1,i=1,count=nums[0],start=i,len=0;
        while(i<size)
        {
            start=i;
            while(i<size&&nums[i]==count+1){count=nums[i++];}
            len=i-start+1;
            maxval=max(maxval,len);
            count=nums[i++];
        }
        return maxval;
    }
};

猜你喜欢

转载自blog.csdn.net/Linger0519/article/details/82562863