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

Python에서 합계가 k인 정렬된 배열을 쌍으로 나눌 수 있는지 확인

<시간/>

숫자 배열이 있고 또 다른 숫자 k가 있다고 가정하면 주어진 배열이 모든 쌍의 합이 k가 되도록 쌍으로 나눌 수 있는지 확인해야 합니다.

따라서 입력이 arr =[1, 2, 3, 4, 5, 6], k =7과 같으면 출력은 (2, 5), (1, 6)과 같은 쌍을 취할 수 있으므로 True가 됩니다. 및 (3, 4).

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • n :=arr의 크기
  • n이 홀수이면
    • 거짓을 반환
  • 낮음 :=0, 높음 :=n - 1
  • 낮은 동안 <높은, do
    • arr[low] + arr[high]가 k와 같지 않으면
      • 거짓을 반환
    • 낮음 :=낮음 + 1
    • 높음 :=높음 - 1
  • 참 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

def solve(arr, k):
   n = len(arr)
   if n % 2 == 1:
      return False
   low = 0
   high = n - 1
   while low < high:
      if arr[low] + arr[high] != k:
         return False
      low = low + 1
      high = high - 1
   return True
arr = [1, 2, 3, 4, 5, 6]
k = 7
print(solve(arr, k))

입력

[1, 2, 3, 4, 5, 6], 7

출력

True