双指针算法.数组元素的目标和 AcWing.800

定义i为头指针,j为尾指针,i从a数组开头走到尾是单调的,j同理。
code:
#include<bits/stdc++.h>//这是xfl的代码 using namespace std; const int N = 1e5+5; int n,m,x,a[N],b[N]; int read() { int f=1,ans=0;char c=getchar(); while(c>'9'||c<'0')if(c=='-'){f*=-1;c=getchar();} while(c>='0'&&c<='9'){ ans=(ans<<3)+(ans<<1)+c-'0'; c=getchar(); } return f*ans; } int main() { n=read();m=read();x=read(); for(int i=1;i<=n;++i)a[i]=read(); for(int i=1;i<=m;++i)b[i]=read(); int i=1,j=m; while(1) { if(a[i]+b[j]==x){ printf("%d %d\n",i-1,j-1);return 0; } else if(a[i]+b[j]<x)i++; else j--; } return 0; }
浙公网安备 33010602011771号