您将获得一个函数
的实现def solution(A, B)
给定N个非负整数的非空零索引数组A和M个非负整数的非空零索引数组B,返回两个数组中出现的最小值。如果没有这样的值,函数应该返回-1。
例如,给定数组A和B使得:A = [1,3,2,1]和B = [4,2,5,3,2],你的函数应该返回2,因为2是在阵列A和B中都出现的最小值)在两个阵列中出现的另一个值是3)。
给定数组A和B使得A = [2,1]和B = [3,3],你的函数应该返回-1,因为两个ararays中都没有值。
某些输入的附加代码仍然不正确。尽管存在错误,但代码可能会为示例测试用例生成正确的答案。练习的目的是找到并修复实现中的错误。您最多可以修改两行。
def solution(A, B):
A.sort()
B.sort()
i = 0
for a in A:
if i < len(B) - 1 and B[i] < a:
i += 1
if a == B[i]:
return a
return -1
任何人都可以帮我完成这项任务吗?哪些可能的输入会产生不正确的解决方案?另外,第一个if语句的目的是什么? :
if < len(B) - 1 and B[i] < a
答案 0 :(得分:4)
另外,第一个if语句的目的是什么?
if i < len(B) - 1 and B[i] < a:
此if语句将检查i是否在数组B的大小范围内,以及索引i处的数组B是否小于当前&#39; a&#39;元件。
然而,错误是这个if语句只检查一次条件并转到下一步,但正确的行为应该是检查直到B [i]小于当前&#39; a&#39;。
所以下面的代码应该按预期工作:
def solution(A, B):
A.sort()
B.sort()
i = 0
for a in A:
while i < len(B) - 1 and B[i] < a:
i += 1
if a == B[i]:
return a
return -1
答案 1 :(得分:0)
只是一个想法。 为什么不与您拥有的两个数组相交。 并找到相交数组中的最小值。
This link可用于交叉两个数组
取自上面的链接(未经测试的代码)
# Python program to illustrate the intersection
# of two lists in most simple way
def intersection(lst1, lst2):
lst3 = [value for value in lst1 if value in lst2]
return lst3
# Driver Code
lst1 = [4, 9, 1, 17, 11, 26, 28, 54, 69]
lst2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
min(intersection(lst1, lst2), default=-1)