给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 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;
}
};