मान लीजिए हमारे पास nums नामक एक ऐरे और एक मान k है। हमें नाइस सब-एरे की संख्या ढूंढनी है। एक सबएरे को नाइस सबएरे कहा जाता है यदि इसमें ठीक k विषम संख्याएं हों।
उदाहरण के लिए, यदि इनपुट nums = [1,1,2,1,1], k = 3 है, तो आउटपुट 2 होगा क्योंकि दो सबएरे [1,1,2,1] और [1,2,1,1] हैं।
हल करने के चरण
odd_i :=एक नई सूची।iको 0 सेnumsके आकार - 1 तक लूप चलाएं:- यदि
nums[i] % 2 == 1, तोiकोodd_iके अंत में जोड़ें।
- यदि
start := 0,end := k - 1i := 0count := 0end < odd_iके आकार तक व्हाइल लूप चलाएं:- यदि
end == odd_iका आकार - 1, तोj := numsका आकार - 1 - अन्यथा,
j := odd_i[end + 1] - 1 count := count + (odd_i[start] - i + 1) * (j - odd_i[end] + 1)i := odd_i[start] + 1start := start + 1end := end + 1
- यदि
countवापस करें।
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(nums, k):
odd_i = []
for i in range(len(nums)):
if nums[i] % 2 == 1:
odd_i.append(i)
start = 0
end = k - 1
i = 0
count = 0
while end < len(odd_i):
if end == len(odd_i) - 1:
j = len(nums) - 1
else:
j = odd_i[end + 1] - 1
count = count + (odd_i[start] - i + 1) * (j - odd_i[end] + 1)
i = odd_i[start] + 1
start = start + 1
end = end + 1
return count
nums = [1,1,2,1,1]
k = 3
print(solve(nums, k))
इनपुट
[1,1,2,1,1], 3
आउटपुट
2