从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
    猜你喜欢