128 - Longest Consecutive Sequence
#medium
Given an unsorted array of integers nums
, return the length of the longest consecutive elements sequence.
You must write an algorithm that runs in O(n)
time.
Example 1:
Input: nums = [100,4,200,1,3,2]
Output: 4
Explanation: The longest consecutive elements sequence is[1, 2, 3, 4]
. Therefore its length is 4.
Example 2:
Input: nums = [0,3,7,2,5,8,4,6,0,1]
Output: 9
Constraints:
0 <= nums.length <= 105
-109 <= nums[i] <= 109
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
int result = 0;
unordered_set<int> set;
for ( int i = 0; i < nums.size(); i++ ) {
set.insert( nums[i] );
}
for ( int i = 0; i < nums.size(); i++ ) {
if ( set.find( nums[i] ) != set.end() ) {
int temp = 1, target = nums[i];
set.erase( target );
while ( set.find( --target ) != set.end() ) {
temp++;
set.erase( target );
}
target = nums[i];
while ( set.find( ++target ) != set.end() ) {
temp++;
set.erase( target );
}
result = max( result, temp );
}
}
return result;
}
};