#include <vector>
#include <unordered_set>
#include <algorithm> // 包含 std::max 函数
class Solution {
public:
int longestConsecutive(std::vector<int>& nums) {
// 创建一个无序集合,用于存储唯一的数字
std::unordered_set<int> num_set;
// 遍历输入数组,将每个元素插入到无序集合中
for (const auto& num : nums) {
num_set.insert(num);
}
// 变量用于存储最长连续序列的长度
int ret = 0;
// 遍历无序集合中的每个元素
for (const auto& num : num_set) {
// 只有当当前元素的前一个元素不在集合中时,才从当前元素开始查找连续序列
if (!num_set.count(num - 1)) {
// 从当前元素开始,尝试扩展连续序列
int cur_num = num;
int cur_len = 1;
// 不断检查下一个元素是否存在于集合中,若存在,则扩展连续序列
while (num_set.count(cur_num + 1)) {
cur_num++;
cur_len++;
}
// 更新最长连续序列的长度
ret = std::max(ret, cur_len);
}
}
// 返回找到的最长连续序列的长度
return ret;
}
};
【题解】128. 最长连续序列(数组、哈希表)
猜你喜欢
转载自blog.csdn.net/Colorful___/article/details/141389084
今日推荐
周排行