假设我们有两个数组,除了一个元素外,它们彼此都是重复的,因此,缺少给定数组之一中的一个元素,我们必须找到该丢失的元素。
因此,如果输入像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