https://leetcode.cn/problems/longest-consecutive-sequence/?envType=study-plan-v2&envId=top-100-liked
需要快速查找一个数是否在数组中就用哈希
unordered_set中find函数与count函数都可以判断一个元素是否在数组中,因为元素唯一,count返回要么是0,要么是1,find找不到返回就是s.end()
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
//我们想要判断一个最长的连续序列,那么我们最希望从起点开始
//怎样找起点呢?就是判断数n的n-1是否在数组中,同时也要快速判断最后一个数n+1是否在数组中,哈希表记录所有数,就可以实现快速查找
int res=0;
int que=1;
unordered_set<int>s(nums.begin(),nums.end());
for(auto st:s){
if(s.find(st-1)==s.end())
{
que=1;
while(s.find(++st)!=s.end())
que++;
res=max(res,que);
//找到一个数作为起点之后,在if里面更新res,刚开始que定义没赋值就会出错
}
// res=max(res,que);
}
return res;
}
};