Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given [100, 4, 200, 1, 3, 2]
,
The longest consecutive elements sequence is [1, 2, 3, 4]
. Return its length: 4
.
Your algorithm should run in O(n) complexity.
要找一个未排序序列里面的最长连续增长子序列,解题思路是首先对数组排序,然后查看相邻元素是否为连续增长,如果是则记录下最后比较得到最大的增长序列的长度即可。
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
if(nums.size()<=1)
return nums.size();
sort(nums.begin(),nums.end());
int count = 1;
int max = count;
int flag = nums[0];
//cout<<flag<<endl;
for(int i=1;i<nums.size();i++)
{
if(flag == nums[i]-1)
{
++count;
flag = nums[i];
}else if( flag != nums[i])
{
if(count>max)
max = count;
count = 1;
flag = nums[i];
}
//cout<<count<<endl;
}
if(count>max)
max = count;
return max;
}
};