我不知道为什么只有三分之二的值显示它们在我的代码中是相同的,是不是我遗漏了什么?
def occurInBoth(B,A):
occured = 0
for i in range(len(A)):
if A[i] == B[i]:
occured += 1
return occured
A = [5,12,31,7,25]
sorted(A)
A.sort()
print(A)
B = [4,12,7,31,42,8]
sorted(B)
B.sort()
print(B)
occured = occurInBoth(B,A)
print(occured)
你能告诉我吗?
最佳答案
你的算法有逻辑错误。如果对两个列表进行排序,并不意味着这些项将出现在同一索引中。
实际上,以您的示例中的排序列表为例:
A = [5, 7, 12, 25, 31]
B = [4, 7, 8, 12, 31, 42]
可以看到
12
出现在两个列表中,但不在同一索引中。但是,您可以利用列表已排序的事实:
def occurInBoth(a, b):
occured = i = j = 0
while i < len(a) and j < len(b):
if a[i] < b[j]:
i += 1
elif a[i] > b[j]:
j += 1
else:
occurred += 1
i += 1
j += 1
关于python - 对两个数组进行排序以查看它们是否具有相同的值,但是只会发现数组中有2/3个相同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58259761/