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

ตรวจสอบว่าองค์ประกอบของอาร์เรย์สามารถจัดเรียงตามเงื่อนไขที่กำหนดใน Python . ได้หรือไม่


สมมติว่าเรามีอาร์เรย์ที่เรียกว่า nums เราต้องตรวจสอบว่าเป็นไปได้หรือไม่ที่จะจัดเรียงองค์ประกอบของ nums เพื่อให้เป็นไปตามเงื่อนไข -

ดังนั้น หากอินพุตเป็น nums =[8, -4, 4, -8] ผลลัพธ์จะเป็น True ราวกับว่าเราจัดเรียงอาร์เรย์เช่น [-4, -8, 4, 8] สำหรับ i =0, nums[2*0 + 1] =2 * (-4) =-8 สำหรับ i =1, nums[2*1 + 1] =2 * 4 =8

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

  • freq :=แผนที่ที่มีองค์ประกอบของ num และความถี่
  • สำหรับแต่ละรายการในหน่วย nums ที่จัดเรียงตามค่าสัมบูรณ์ ให้ทำ
    • ถ้า freq[item] เป็น 0 แล้ว
      • ติดตามตอนต่อไป
    • ถ้า freq[2 * item] เป็น 0 แล้ว
      • คืนค่าเท็จ
    • ความถี่[รายการ] :=ความถี่[รายการ] - 1
    • ความถี่[2 * รายการ] :=ความถี่[2 * รายการ] - 1
  • คืนค่า True

ตัวอย่าง

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

from collections import defaultdict
def solve(nums):
   freq = defaultdict(int)
   for item in nums:
      freq[item] += 1
   for item in sorted(nums, key = abs):
      if freq[item] == 0:
         continue
      if freq[2 * item] == 0:
         return False
      freq[item] -= 1
      freq[2 * item] -= 1
   return True
nums = [8, -4, 4, -8]
print(solve(nums))

อินพุต

[8, -4, 4, -8]

ผลลัพธ์

True