Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

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과 같을 때

    • 해결 반환(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