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

โปรแกรมค้นหาอาร์เรย์ของคู่คู่โดยใช้ Python


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums ซึ่งมีความยาวเท่ากัน เราต้องตรวจสอบว่าสามารถเรียงลำดับใหม่ในลักษณะที่ nums[2*i + 1] =2*nums[2*i] สำหรับทุก ๆ 0 ได้หรือไม่ =i <ขนาดของ nums/2.

ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[4,-2,2,-4] ผลลัพธ์จะเป็น True

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • cnt :=แผนที่ที่มีองค์ประกอบทั้งหมดเป็น nums และค่าความถี่ของพวกมัน

  • สำหรับแต่ละ x ในรายการที่เรียงลำดับ cnt ซึ่งถูกจัดเรียงตามค่าสัมบูรณ์ ให้ทำ

    • ถ้า cnt[x]> cnt[2 * x] แล้ว

      • คืนค่าเท็จ

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

  • คืนค่า True

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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