Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาอาร์เรย์คู่ที่คูณสองใน Python

ปัญหา

อาร์เรย์ nums ความยาวคู่ จัดเรียงใหม่ได้ไหม ที่ nums[2*i+1] = 2*nums[2*i] สำหรับทุก i

ตัวอย่าง

nums=[4,-2,2,-4] → True (จัดเป็น [-2,-4,2,4] หรือ [2,4,-2,-4])

ขั้นตอนการแก้ปัญหา

  1. cnt := Counter(nums)
  2. วน x ใน sorted(cnt, key=abs):
    • ถ้า cnt[x] > cnt[2*x]: คืน False
    • cnt[2*x] -= cnt[x]
  3. คืน True

การนำไปใช้งาน (Python)

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