数组元素的目标和()

给定两个升序排序的有序数组 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;
}