题目:最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
方案一:哈希表
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int>S;
for(int i=0;i<nums.size();i++)
S.insert(nums[i]);
int max_len=0;
for(auto t:S)
{
if(!S.count(t-1))
{
int cnt=1;
int t_=t;
while(S.count(t_+1))
{
cnt++;
t_++;
}
max_len=max(max_len,t_-t+1);
}
}
return max_len;
}
};