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

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


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

ดังนั้น หากอินพุตเป็น nums =[3,2,10,4,1] ผลลัพธ์จะเป็น True, 10 =(3+2+4+1)

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

  • ความถี่ :=แผนที่ว่าง
  • รวม :=0
  • สำหรับฉันในช่วง 0 ถึงขนาดของ nums - 1 ทำ
    • ความถี่[nums[i]] :=freq[nums[i]] + 1
    • ผลรวม :=รวม + จำนวน[i]
  • ถ้าผลรวมเป็นคู่
    • ถ้า freq[quotient of (total / 2)] ไม่ใช่ศูนย์ ดังนั้น
      • คืนค่า True
  • คืนค่าเท็จ

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

โค้ดตัวอย่าง

from collections import defaultdict
def solve(nums):
   freq = defaultdict(int)

   total = 0
   for i in range(len(nums)):
      freq[nums[i]] += 1
      total += nums[i]
     
   if total % 2 == 0:
      if freq[total // 2]:
         return True
   return False
 
nums = [3,2,10,4,1]
print(solve(nums))

อินพุต

[3,2,10,4,1]

ผลลัพธ์

True