$$\color{red}{算法}\color{blue}{基础课}\color{purple}{笔记and题解}\color{green}{汇总}$$
笔记:
两个指针分别指向第一个数组的头和第二个数组的尾。
随后就是慢慢往中间移动啦,整体还是和代码框架一样。
代码:
#include <bits/stdc++.h>
using namespace std;
int n, m, k, a[100010], b[100010];
int main() {
scanf("%d%d%d", &n, &m, &k);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
for (int j = 1; j <= m; j++) scanf("%d", &b[j]);
for (int i = 1, j = m; i <= n; i++) {
while (j > 0 && a[i] + b[j] > k) j--;
if (j > 0 && a[i] + b[j] == k) printf("%d %d\n", i - 1, j - 1);
}
return 0;
}