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

Python을 사용하여 이중 쌍의 배열을 찾는 프로그램

<시간/>

길이가 짝수인 호출된 num의 배열이 있다고 가정하고 0 <=i <숫자의 크기/2.

따라서 입력이 nums =[4,-2,2,-4]와 같으면 출력은 True가 됩니다.

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

  • cnt :=숫자의 모든 요소와 해당 빈도 값을 포함하는 맵

  • 절대값을 기준으로 정렬된 정렬된 목록 cnt의 각 x에 대해 다음을 수행합니다.

    • cnt[x]> cnt[2 * x]이면

      • 거짓을 반환

    • cnt[2 * x] :=cnt[2 * x] - cnt[x]

  • 참을 반환

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

from collections import Counter
def solve(nums):
   cnt = Counter(nums)
   for x in sorted(cnt, key=abs):
      if cnt[x] > cnt[2 * x]:
         return False
      cnt[2 * x] -= cnt[x]
   return True

nums = [4,-2,2,-4]
print(solve(nums))

입력

[6,0,8,2,1,5]

출력

True