分析
就是一个模板,直接排序加扫描就可以。但是题面要求时间复杂度 O (n),该方法为 O (nlongn),但是在题目105数据量下是完全合理的。
排序后每次扫描,看下一个数是否连续就可以。
代码
cpp
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
int n=nums.size();
if(n==0)return 0;
sort(nums.begin(),nums.end());
int cnt=1;
int maxn=1;
for(int i=1;i<n;++i){
if(nums[i]==nums[i-1]+1){
cnt+=1;
}else if(nums[i]==nums[i-1]){
}else{
cnt=1;
}
maxn=max(maxn,cnt);
}
return maxn;
}
};