数组元素的目标和()-其他
数组元素的目标和()
给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。
数组下标从 0 开始。
请你求出满足 A[i]+B[j]=x 的数对 (i,j)。
数据保证有唯一解。
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 1e5 + 10;
int m, n, x;
int a[N], b[N];
int main() {
scanf ("%d%d%d", &m, &n, &x);
for (int i = 0; i < m; i++) scanf ("%d", &a[i]);
for (int i = 0; i < n; i++) scanf ("%d", &b[i]);
for (int i = 0, j = n - 1; i < m && j >= 0; ) {
int t = a[i] + b[j];
if (t == x) {
cout << i << " " << j << endl;
return 0;
}
else if (t > x) j--;
else i++;
}
return 0;
}
————————
给定两个升序排序的有序数组 A 和 B,以及一个目标值 x。
数组下标从 0 开始。
请你求出满足 A[i]+B[j]=x 的数对 (i,j)。
数据保证有唯一解。
#include <iostream>
#include <cstdio>
using namespace std;
const int N = 1e5 + 10;
int m, n, x;
int a[N], b[N];
int main() {
scanf ("%d%d%d", &m, &n, &x);
for (int i = 0; i < m; i++) scanf ("%d", &a[i]);
for (int i = 0; i < n; i++) scanf ("%d", &b[i]);
for (int i = 0, j = n - 1; i < m && j >= 0; ) {
int t = a[i] + b[j];
if (t == x) {
cout << i << " " << j << endl;
return 0;
}
else if (t > x) j--;
else i++;
}
return 0;
}