利用哈希表,对于每个数搜索num+1和num-1直到找不到位置,记录长度
class Solution {
public:
int longestConsecutive(vector<int> &num) {
if( num.size() <= 1)
return num.size();
unordered_set<int> nums;
for( int i = 0; i < num.size(); ++i){
nums.insert(num[i]);
}
int max_len = 0;
for( int i = 0; i < num.size(); ++i){
int cur_len = 0;
int n = num[i];
if( nums.find(n) != nums.end()){
++cur_len;
nums.erase(n);
while( nums.find(++n) != nums.end()){
++cur_len;
nums.erase(n);
}
n = num[i];
while( nums.find(--n) != nums.end()){
++cur_len;
nums.erase(n);
}
max_len = max_len > cur_len ? max_len : cur_len;
}
}
return max_len;
}
};