一、题目
二、代码
class Solution
{
public:
//unordered_map 中间点亮 连通 维护左右边界
int longestConsecutive(vector<int>& nums)
{
unordered_map<int, int> re;
int return_int=0;
for(int num:nums)
{
if(re[num]!=0) continue;
//点亮中间 根据左右计算
int left=re[num-1];
int right=re[num+1];
int temp_length=left+right+1;
return_int=max(temp_length,return_int);
// std::cout<<"left "<<left<<std::endl;
// std::cout<<"right "<<right<<std::endl;
// std::cout<<"temp_length "<<temp_length<<std::endl;
// std::cout<<"return_int "<<return_int<<std::endl;
//维护边界
re[num]=temp_length;
re[num-left]=temp_length;
re[num+right]=temp_length;
}
return return_int;
}
};