मान लीजिए हमारे पास एक बाइनरी सूची है, तो यहां केवल 1s और 0s उपलब्ध हैं और हमारे पास एक और संख्या k भी है। हम अधिकतम k 0s से 1s तक सेट कर सकते हैं, हमें सभी 1s वाली सबसे लंबी सबलिस्ट की लंबाई ज्ञात करनी होगी।
इसलिए, यदि इनपुट nums =[0, 1, 1, 0, 0, 1, 1] k =2 जैसा है, तो आउटपुट 6 होगा, क्योंकि हम दो मध्य 0s को 1s पर सेट कर सकते हैं और फिर सूची बन जाती है [0, 1, 1, 1, 1, 1, 1]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- शून्य:=0, उत्तर:=0, जे:=0
- प्रत्येक इंडेक्स के लिए i और मान n अंकों में, करते हैं
- शून्य :=शून्य + (1 जब n 0 के समान हो, अन्यथा 0)
- शून्य होने पर> k, करते हैं
- शून्य:=शून्य - (1 जब nums[j] 0 के समान हो, अन्यथा 0)
- j :=j + 1
- यदि i - j + 1> उत्तर है, तो
- उत्तर :=i - j + 1
- वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, nums, k): zeros = 0 ans = 0 j = 0 for i, n in enumerate(nums): zeros += n == 0 while zeros > k: zeros -= nums[j] == 0 j += 1 if i - j + 1 > ans: ans = i - j + 1 return ans ob = Solution() nums = [0, 1, 1, 0, 0, 1, 1] k = 2 print(ob.solve(nums, k))
इनपुट
[0, 1, 1, 0, 0, 1, 1], 2
आउटपुट
6