【题解】128. 最长连续序列(数组、哈希表)

https://leetcode.cn/problems/longest-consecutive-sequence/description/?envType=study-plan-v2&envId=top-100-liked
在这里插入图片描述

#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;
    }
};

猜你喜欢

转载自blog.csdn.net/Colorful___/article/details/141389084