题目
反正我每次做法都不一样?每次都看不懂之前的我在写啥?
听说是字节二面原题?
class Solution {
public:
int longestConsecutive(vector<int>& a) {
int n=a.size();
map<int,int>mp,vis;int ans=0;
for(int i=0;i<n;++i) vis[a[i]]=0;
for(int i=0;i<n;++i){
if(vis[a[i]]) continue;vis[a[i]]=1;
int x=0,y=0;
if(mp.count(a[i]+1)) x=mp[a[i]+1];
if(mp.count(a[i]-1)) y=mp[a[i]-1];
mp[a[i]+x]=mp[a[i]-y]=x+y+1;
ans=max(ans,x+y+1);
}
return ans;
}
};