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

โปรแกรมค้นหาจำนวนรายการย่อยที่มีเป้าหมายใน python


สมมติว่าเรามีรายการตัวเลขที่เรียกว่า 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