class Solution {
public:
int longestConsecutive(std::vector<int>& nums) {
if (nums.empty()) {
return 0;
}
int max_len = 0;
std::unordered_set<int> u_set;
for (int i = 0; i < nums.size(); ++i) {
u_set.emplace(nums[i]);
}
for (auto& num : nums) {
if (u_set.find(num - 1) == u_set.end()) {
int len = 0;
while (u_set.find(num + len) != u_set.end()) {
++len;
max_len = std::max(max_len, len);
}
}
}
return max_len;
}
};
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
if (nums.empty()) {
return 0;
}
int max_len = 0;
std::unordered_set<int> u_set;
std::unordered_set<int> processed;
for (int num : nums) {
u_set.emplace(num);
}
for (int num : nums) {
if (processed.find(num) == processed.end()) {
int len = 0;
int current_num = num;
while (u_set.find(current_num)!= u_set.end()) {
processed.emplace(current_num);
++len;
++current_num;
}
current_num = num - 1;
while (u_set.find(current_num)!= u_set.end()) {
processed.emplace(current_num);
++len;
--current_num;
}
max_len = std::max(max_len, len);
}
}
return max_len;
}
};