目录
1.最长连续序列
这道题来说,我们可以通过遍历数组,去查找数组中是否存在当前值-1的数字,因为如果存在了当前数-1的数字的话,以当前数字为开头就不是最长连续序列,找到了开头之后就不断的+1,判断是否存在,在最后可以进行一个小优化,如果说当前的长度已经大于或等于了二分之一的数组长度的话,就可以直接返回了,因为不存在更长的连续序列
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_set<int> set(nums.begin(), nums.end());
int len = 0;
for(auto x : nums)
{
if(set.contains(x - 1))
continue;
int y = x + 1;
while(set.contains(y))
y++;
len = max(len, y - x);
if(len * 2 >= nums.size())
break;
}
return len;
}
};