从Python中的重复数组中查找丢失的元素
假设我们有两个数组,除了一个元素外,它们彼此都是重复的,因此,缺少给定数组之一中的一个元素,我们必须找到该丢失的元素。
因此,如果输入像A=[2,5,6,8,10],B=[5,6,8,10],则输出将为2,因为第二个数组中缺少2。
为了解决这个问题,我们将遵循以下步骤-
定义一个功能solve()。这将需要A,B,N
如果N与1相同,则
返回A[0];
如果A[0]与B[0]不同,则
返回A[0]
低:=0,高:=N-1
从低到高,做
从循环中出来
高:=中
低:=中
中:=(低+高)/2
如果A[mid]与B[mid]相同,则
除此以外,
如果低等于高-1,则
返回A[高]
从主要方法中,执行以下操作-
M:=A的大小,N:=B的大小
如果N与M-1相同,则
返回求解(A,B,M)
否则,当M与N-1相同时,则
返回solve(B,A,N)
除此以外,
返回“未找到”
示例
让我们看下面的实现以更好地理解-
def solve(A, B, N):
if N == 1:
return A[0];
if A[0] != B[0]:
return A[0]
low = 0
high = N - 1
while (low < high):
mid = (low + high) / 2
if A[mid] == B[mid]:
low = mid
else:
high = mid
if low == high - 1:
break
return A[high]
def get_missing_element(A, B):
M = len(A)
N = len(B)
if N == M-1:
return solve(A, B, M)
elif M == N-1:
return solve(B, A, N)
else:
return "Not found"
A = [2, 5, 6, 8, 10]
B = [5, 6, 8, 10]
print(get_missing_element(A, B))输入值
[2, 5, 6, 8, 10], [5, 6, 8, 10]
输出结果
2