给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 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;
}
};
本文介绍了一个寻找整数数组中最长连续序列的算法实现,该算法通过排序、去重及计算连续序列长度的方法达到O(n)的时间复杂度。示例中使用了[100,4,200,1,3,2]作为输入,输出结果为4。
686

被折叠的 条评论
为什么被折叠?



