สมมติว่าเรามีรายการตัวเลขที่เรียกว่า nums และ value target อื่น เราต้องหาจำนวนรายการย่อยที่ผลรวมเท่ากับเป้าหมาย
ดังนั้น หากอินพุตมีค่าเท่ากับ nums =[3, 0, 3] target =3 ผลลัพธ์จะเป็น 4 เนื่องจากเรามีรายการย่อยเหล่านี้ซึ่งผลรวมคือ 3:[3], [3, 0], [0, 3], [3].
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
- อุณหภูมิ :=แผนที่ว่างเปล่า
- อุณหภูมิ[0] :=1
- s :=0
- ตอบ :=0
- สำหรับ i ในช่วง 0 ถึงขนาดของ nums ให้ทำ
- s :=s + nums[i]
- comp :=s - เป้าหมาย
- ถ้าคอมพ์อยู่ในอุณหภูมิชั่วคราว
- ans :=ans + temp[comp]
- อุณหภูมิ[s] :=อุณหภูมิ[s] + 1
- คืนสินค้า
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:
โค้ดตัวอย่าง
from collections import defaultdict class Solution: def solve(self, nums, target): temp = defaultdict(int) temp[0] = 1 s = 0 ans = 0 for i in range(len(nums)): s += nums[i] comp = s - target if comp in temp: ans += temp[comp] temp[s] += 1 return ans ob = Solution() nums = [3, 0, 3] target = 3 print(ob.solve(nums, target))
อินพุต
[3, 0, 3], 3
ผลลัพธ์
4