मान लीजिए कि हमारे पास 0s या 1s के साथ एक बाइनरी सूची है। हमारे पास k नामक एक अन्य इनपुट भी है, हमें उन सबलिस्ट्स की संख्या ज्ञात करनी है जिनका योग k के समान है।
इसलिए, यदि इनपुट संख्या =[1, 0, 0, 1, 1, 1, 0, 1] k =3 की तरह है, तो आउटपुट 8 होगा क्योंकि सबलिस्ट [1,0,0,1,1] हैं ], [0,0,1,1,1], [0,0,1,1,1,0], [0,1,1,1], [0,1,1,1,0], [1,1,1], [1,1,1,0] [1,1,0,1]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- sums :=एक मानचित्र में प्रारंभ में कुंजी 0 के लिए valye 1 होता है
- r_sum :=0
- उत्तर:=0
- अंकों में प्रत्येक x के लिए, करें
- r_sum :=r_sum + x
- उत्तर:=उत्तर + (योग [r_sum - k] यदि (r_sum - k) मौजूद है, अन्यथा 0)
- sums[r_sum] :=1 + (योग [r_sum - k] यदि (r_sum - k) मौजूद है, अन्यथा 0)
- वापसी उत्तर
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(nums, k):
sums = {0: 1}
r_sum = 0
ans = 0
for x in nums:
r_sum += x
ans += sums.get(r_sum - k, 0)
sums[r_sum] = sums.get(r_sum, 0) + 1
return ans
nums = [1, 0, 0, 1, 1, 1, 0, 1]
k = 3
print(solve(nums, k)) इनपुट
[1, 0, 0, 1, 1, 1, 0, 1], 3
आउटपुट
8