LC128.最长连续序列
思路
- 例如
[4, 2, 1, 3, 100, 101, 102]
分成两步:
- 找个每个连续的部分(红圈圈起来的)具体做法:把整个数组倒进哈希表里面,如果
num - 1
不存在,那么num
一定就是连续部分的开始。 判断每个连续部分的长度 具体做法:逐个往后读,直到哈希表中不存在该数 + 1为止
代码
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int> rec;
for (int num : nums) {
rec.insert(num);
}
int max_len = 0;
for (int num : nums) {
int cur_len = 1;
int cur_num = num;
if (!rec.count(cur_num - 1)) {
while (rec.count(cur_num + 1)) {
cur_len += 1;
cur_num += 1;
}
}
max_len = max(max_len, cur_len);
}
return max_len;
}
};
- 找个每个连续的部分(红圈圈起来的)具体做法:把整个数组倒进哈希表里面,如果