하나의 요소를 제외하고 서로 중복되는 두 개의 배열이 있다고 가정하고 주어진 배열 중 하나에서 하나의 요소가 누락된 경우 해당 누락된 요소를 찾아야 합니다.
따라서 입력이 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