Computer >> Máy Tính >  >> Lập trình >> Python

Tìm phần tử bị mất từ ​​một mảng trùng lặp trong Python


Giả sử chúng ta có hai mảng là bản sao của nhau trừ một phần tử, do đó, một phần tử từ một trong các mảng đã cho bị thiếu, chúng tôi phải tìm phần tử bị thiếu đó.

Vì vậy, nếu đầu vào là A =[2, 5, 6, 8, 10], B =[5, 6, 8, 10], thì đầu ra sẽ là 2 vì mảng thứ hai bị thiếu 2.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Định nghĩa một hàm giải quyết (). Điều này sẽ mất A, B, N

  • nếu N giống 1 thì

    • trả về A [0];

  • nếu A [0] không giống B [0] thì

    • trả về A [0]

  • thấp:=0, cao:=N - 1

  • trong khi thấp

    • giữa:=(thấp + cao) / 2

    • nếu A [giữa] giống với B [giữa] thì

      • thấp:=trung bình

    • nếu không,

      • cao:=giữa

    • nếu thấp tương đương với cao - 1, thì

      • đi ra từ vòng lặp

  • trả về A [cao]

  • Từ phương thức chính, thực hiện như sau -

  • M:=kích thước của A, N:=kích thước của B

  • nếu N giống M-1 thì

    • trả về giải quyết (A, B, M)

  • ngược lại khi M giống với N-1 thì

    • trả về giải quyết (B, A, N)

  • nếu không,

    • trả về "Không tìm thấy"

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơ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))

Đầu vào

[2, 5, 6, 8, 10], [5, 6, 8, 10]

Đầu ra

2