难度:hard
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.
这道题是要找到相连的最大长度的子串 这就意味着 我们首先需要将这个vector进行排序 然后把重复的元素删除掉 然后进行选择 就做出来了
int longestConsecutive(vector<int>& nums) {
if(nums.size()==0)return 0;
else if(nums.size()==1)return 1;
sort(nums.begin(),nums.end());
for(int i=nums.size()-1;i>=1;i--)
{
if(nums[i-1]==nums[i])
{
vector<int>:: iterator it=nums.begin()+i;
nums.erase(it);
}
}
int count=1;
int temp=1;
int number=nums[0];
for(int i=1;i<nums.size();i++){
if(nums[i]-number==1){
temp+=1;
number=nums[i];
if(i==nums.size()-1)
{
if(temp>=count)
return temp;
else
return count;
}
}
else if(nums[i]-number!=1){
if(temp>=count)
count=temp;
temp=1;
number=nums[i];
}
}
return count;
}