मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और एक मान target है, हमें उन सबलिस्ट्स की संख्या ढूंढनी है जिनका योग target के बराबर है।
उदाहरण के लिए, यदि इनपुट nums = [3, 0, 3] और target = 3 है, तो आउटपुट 4 होगा, क्योंकि हमारे पास ये सबलिस्ट्स हैं जिनका योग 3 है: [3], [3, 0], [0, 3], [3]।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
temp :=एक खाली मैपtemp[0] := 1s := 0,ans := 0iको 0 सेlen(nums)तक के लिए:s := s + nums[i]comp := s - target- यदि
comptempमें है:ans := ans + temp[comp]
temp[s] := temp[s] + 1
ansलौटाएं
उदाहरण कोड
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