双指针算法.数组元素的目标和 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;
}

 

posted @ 2020-12-18 16:40  纸上的彩虹  阅读(57)  评论(0)    收藏  举报