128. 最长连续序列

中等 · 哈希表优化 · O(n)解法

题目

128. 最长连续序列
官方题解

方法一:哈希表

使用哈希表存储数组中的元素,然后对于每个元素,检查其前驱元素是否存在,以此来找到连续序列的起点,并计算序列长度。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution {
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int> num_set;
        for (auto num : nums) {
            num_set.insert(num);
        }

        int res = 0;
        for (auto num : num_set) {
            if (!num_set.count(num - 1)) {
                int cur = num;
                int len = 1;

                while (num_set.count(cur + 1)) {
                    len ++;
                    cur ++;
                }

                res = max(res, len);
            }
        }

        return res;
    }
};