题目
哈希
建立一个哈希表,然后统计每个元素作为起始点的长度即可。时间复杂度 O ( n ) O(n) O(n) ,空间复杂度 O ( n ) O(n) O(n) :
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int> hash;
for (int num : nums)
hash.insert(num);
int longest_streak = 0;
for (int num : hash)
if (!hash.count(num - 1)) {
int current_num = num;
int current_streak = 1;
while (hash.count(current_num + 1)) {
current_num++;
++current_streak;
}
longest_streak = max(longest_streak, current_streak);
}
return longest_streak;
}
};