方法一:使用快排:
//排序法,时间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)