AcWing 799. 纯用while的双指针算法
原题链接
简单
作者:
小小瓷丁
,
2021-01-13 15:51:02
,
所有人可见
,
阅读 257
纯用while
#include<iostream>
using namespace std;
int n;
int a[100010];
int b[100010]={0};
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int ans = 0, l = 0, r = -1;
while(l<n&&r<n){
if(b[a[r+1]]==0){
b[a[r+1]] = 1;
r++;
}
else{
b[a[l]] = 0;
l++;
}
ans = max(ans,r-l+1);
}
cout<<ans<<endl;
}
y总做法
#include<iostream>
using namespace std;
const int N = 100010;
int a[N],b[N];
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
int ans=0;
for(int i=0,j=0;i<n;i++){
b[a[i]]++;
while(b[a[i]]>1){
b[a[j]]--;
j++;
}
ans = max(ans,i-j+1);
}
cout<<ans<<endl;
return 0;
}
enheng