AcWing 800. 数组元素的目标和
原题链接
简单
C++ 代码
#include <iostream>
using namespace std;
const int N=1e5+10;
int a[N];
int b[N];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int n,m,x;
cin >> n >> m >> x;
for(int i = 0; i < n; ++i)
cin >> a[i];
for(int i = 0; i < m; ++i)
cin >> b[i]; //双指针算法,先暴力后找单调性以及i与j的关系
for(int i = 0,j = m - 1; i < n; ++i){ //可以发现由于a,b都是有序的,所以使i=0,j=m-1,即分别使i位于a起点,j位于b终点
while(j >= 0 && a[i] + b[j] > x) //若进入循环则说明a中i后面的+b[j]肯定大于x,说明此时b[j]太大了,所以--j
--j;
if(a[i] + b[j] == x){
cout << i << " " << j;
return 0;
} //若继续循环说明a[i]太小了,++i
}
}