Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
Your algorithm should run in O(n) complexity.
Example:
Input: [100, 4, 200, 1, 3, 2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]
. Therefore its length is 4.
解题思路:
将向量中的元素存储在set中,将元素有序存放。然后再遍历set中元素。
class Solution {
public:
int longestConsecutive(vector<int>& nums)
{
if(nums.empty()) return 0 ;
set<int> num ;
int sz = nums.size() ;
int ans = 1 ;
for(int i = 0 ; i < sz ; i++)
{
num.insert(nums[i]) ;
}
auto itb = num.begin() ;
while(itb != num.end())
{
int cnt = 1 ;
auto its = itb ;
its++ ;
while(its != num.end() && *its == *itb + 1) //寻找有序序列
{
itb++ ;
its++ ;
cnt++ ;
}
ans = max(ans , cnt) ;
itb++ ;
}
return ans ;
}
};