题目描述
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-consecutive-sequence
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
思路
代码
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int> nums_set;
for(int num : nums)
nums_set.insert(num);
int res = 0;
for(int num : nums_set)
{
if(!nums_set.count(num - 1))
{
int currentNum = num;
int currentSteak = 1;
while(nums_set.count(currentNum + 1))
{
currentNum += 1;
currentSteak += 1;
}
res = max(currentSteak, res);
}
}
return res;
}
};