我们有两个整数数组,a和b,以及一个整数目标值v。确定是否有一对数字,其中一个数字取自a,另一个数字取自b,可以加在一起得到v的总和如果存在这样的一对,则返回true,否则返回false。
例如:对于a = [1, 2, 3]
,b = [10, 20, 30, 40]
和v = 42
,输出应该是
sumOfTwo(a, b, v) = True
我的代码到目前为止:
def sumOfTwo(a, b, v):
for x in a:
for y in b:
if x+y == v:
return True
return False
我想减少执行时间,因为执行长列表需要很长时间。
如果你首先将b
转换为集合应该会快得多:
def sumOfTwo(a, b, v):
b = set(b)
return any(v - x in b for x in a)
对于强力解决方案,复杂性应该是O(M + N)而不是O(MN)。