我们有两个整数数组,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
我想减少执行时间,因为执行长列表需要很长时间。
答案 0 :(得分:1)
如果您先将b
转换为集合,那么它应该快得多:
def sumOfTwo(a, b, v):
b = set(b)
return any(v - x in b for x in a)
对于强力解决方案,复杂性应该是O(M + N)而不是O(MN)。