สมมติว่าเรามีอาร์เรย์ที่เรียกว่า 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
- ถ้า freq[quotient of (total / 2)] ไม่ใช่ศูนย์ ดังนั้น
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
โค้ดตัวอย่าง
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