思路:把数组排序,从数组中第一个元素开始,检查数组中当前元素加1是否等于下一个元素,成立则连续序列加一;若数组中当前元素是等于下一个元素,那连续序列不变且继续查看下一个元素;若数组中当前元素加1不等于下一个元素,那么连续序列重新从1开始增加;只保留连续序列最大值。

class Solution {

public:

    int longestConsecutive(vector<int>& nums) {

        sort(nums.begin(),nums.end());

        int ans=1;

        int i;

        int count=1;

        int n=nums.size();

        if(n==0) return 0;

        for(i=0;i<n-1;i++)

        {

            if(nums[i]+1==nums[i+1])

            {

                count++;

            }

            else if(nums[i]==nums[i+1])

            {

                continue;

            }

            else {

                ans=max(count,ans);

                count=1;

            }

        }

        ans=max(count,ans);

        return ans;

    }

};

更多推荐