1. 问题描述:
给定一个整数数组 A,其包含 n 个正整数 a1,a2,…,an 以及一个整数数组 B,其包含 m 个正整数 b1,b2,…,bm。请从数组 A 中挑选一个元素 a 并从数组 B 中挑选一个元素 b,使得 a + b 既不包含于 A 也不包含于 B。例如,如果 A=[2,1,7] 而 B=[1,3,4],则可以从 A 中选取 1,从 B 中选取 4,这样得到的数字 1+4=5 既不在 A 中,也不在 B 中。但是,我们不能从 A 中选取 2,从 B 中选取 1,因为得到的数字 2+1=3 包含于 B。可以证明这样的数对一定存在,如果答案不唯一则输出任意合理答案均可。
输入格式
第一行包含整数 n。第二行包含 n 个整数 a1,…,an。第三行包含整数 m。第四行包含 m 个整数 b1,…,bm。
输出格式
共一行,输出 a 和 b,中间用空格隔开。
数据范围
对于 30% 的数据,1 ≤ n,m ≤ 10
对于 100% 的数据,1 ≤ n,m ≤ 100,1 ≤ ai,bi ≤ 200
输入样例1:
1
20
2
10 20
输出样例1:
20 20
输入样例2:
3
3 2 2
5
1 5 7 7 9
输出样例2:
3 1
输入样例3:
4
1 3 5 7
4
7 5 3 1
输出样例3:
1 1
来源:https://www.acwing.com/problem/content/3580/
2. 思路分析:
分析题目可以知道我们可以将a和b的数字全部存储到哈希表中,然后枚举a和b的每一个数字,判断x + y是否在哈希表中,如果不在哈希表中说明当前选择的两个数字符合要求,输出直接返回即可。
3. 代码如下:
class Solution:
def process(self):
n = int(input())
a = list(map(int, input().split()))
m = int(input())
b = list(map(int, input().split()))
mp = dict()
for x in a:
mp[x] = 1
for x in b:
mp[x] = 1
for x in a:
for y in b:
if x + y not in mp:
print(x, y)
return
if __name__ == '__main__':
Solution().process()