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

Chương trình tìm mảng các cặp nhân đôi bằng Python

Giả sử chúng ta có một mảng được gọi là nums có độ dài là chẵn, chúng ta phải kiểm tra xem liệu có thể sắp xếp lại nó theo cách mà nums [2 * i + 1] =2 * nums [2 * i] với mọi 0

Vì vậy, nếu đầu vào giống như nums =[4, -2,2, -4], thì đầu ra sẽ là True.

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

  • cnt:=một bản đồ chứa tất cả các phần tử ở dạng num và giá trị tần số của chúng

  • đối với mỗi x trong danh sách đã sắp xếp cnt được sắp xếp dựa trên giá trị tuyệt đối của chúng, hãy thực hiện

    • nếu cnt [x]> cnt [2 * x] thì

      • trả về Sai

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

  • trả về True

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

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

Đầu ra

True