题目描述
数组元素的目标和
双指针:在数组有单调性的情况下
C++ 代码
#include<iostream>
using namespace std;
const int N=100010;
int a[N],b[N];
int n,m,x;
int main()
{
cin>>n>>m>>x;
for(int i=0;i<n;i++)cin>>a[i];
for(int i=0;i<m;i++)cin>>b[i];
//双指针,只有一个指针遍历,另一个指针在条件下移动
//判断条件为大于时,在单调递增下,一个数组从前往后,另一个数组从后往前效率高
for(int i=0,j=m-1;i<n;i++)
{
//根据条件改变j的值,,,则时间复杂度为m+n
while(j>0&&a[i]+b[j]>x)
j--;
//输出的条件
if(a[i]+b[j]==x)cout<<i<<" "<<j;
}
return 0;
}