目标和
对有序数组求目标和使用双指针,一定要注意双指针开始的位置,一个在最小的元素,一个在最大的元素
只有这样才可以控制双指针的移动方向
C++ 代码
#include <iostream>
using namespace std;
int n,m,x;
const int N = 1e5 + 10;
int a[N],b[N],s[N];
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];
int idx = 0;
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;
}
return 0;
}