1. 题目来源
链接:3577. 选择数字
2. 题目解析
签到题。
被签到题秀。
原来只需要返回一组正确答案即可…
那么两个最大值之和一定不在两个数组中。
时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)
// 思维
#include <bits/stdc++.h>
using namespace std;
int n, m;
int main() {
int a = -1, b = -1;
scanf("%d", &n);
int x;
for (int i = 0; i < n; i ++ ) scanf("%d", &x), a = max(a, x);
scanf("%d", &m);
for (int i = 0; i < m; i ++ ) scanf("%d", &x), b = max(b, x);
printf("%d %d\n", a, b);
return 0;
}
// 愚蠢的写法,还把读入搞错, WA 了一次
#include <iostream>
#include <cstring>
#include <algorithm>
#include <unordered_map>
using namespace std;
const int N = 105;
int n, m;
int a[N], b[N];
unordered_map<int, int> h;
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i ++ ) scanf("%d", &a[i]), h[a[i]] ++ ;
scanf("%d", &m);
for (int i = 0; i < m; i ++ ) scanf("%d", &b[i]), h[b[i]] ++ ;
int c, d;
for (int i = 0; i < n; i ++ )
for (int j = 0; j < m; j ++ ) {
int t = a[i] + b[j];
if (!h.count(t)) {
c = i, d = j;
break;
}
}
printf("%d %d\n", a[c], b[d]);
return 0;
}