双指针算法(AcWing 799.800)
Posted zyz010206
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了双指针算法(AcWing 799.800)相关的知识,希望对你有一定的参考价值。
#include<iostream> using namespace std; int n,res; const int N=100010; int a[N],s[N]; int main() { cin>>n; for(int i=0;i<n;i++)cin>>a[i]; for(int i=0,j=0;i<n;i++) { s[a[i]]++; //i指针,j指针分别指向区间两端。 while(s[a[i]]>1) { s[a[j]]--; j++; } res=max(res,i-j+1);//i-j+1可以取区间。 } cout<<res<<endl; return 0; }
#include<iostream> #include<algorithm> #include<bits/stdc++.h> using namespace std; int n,m,x; const int N = 100010; int a[N],b[N]; int main() { cin>>n>>m>>x; for(int i=0; i<n; i++) { cin>>a[i]; } for(int j=0; j<m; j++) { cin>>b[j]; } for(int i=0,j=m-1; i<n; i++) { while(j>=0&&a[i]+b[j]>x)j--; if(a[i]+b[j]==x) { cout<<i<<" "<<j<<endl; break; } } return 0; }
以上是关于双指针算法(AcWing 799.800)的主要内容,如果未能解决你的问题,请参考以下文章