Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में k बिट्स को फ़्लिप करके 1s के सबसे लंबे सेट की लंबाई खोजने का कार्यक्रम

मान लीजिए हमारे पास एक बाइनरी सूची है, तो यहां केवल 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

  1. पायथन में सबसे लंबी मैट्रिक्स पथ लंबाई की लंबाई खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है, जहां 0 खाली सेल को इंगित करता है और 1 दीवार को इंगित करता है। हम पहली पंक्ति पर किसी भी खाली सेल से शुरू कर सकते हैं और अंतिम पंक्ति पर किसी भी खाली सेल पर समाप्त करना चाहते हैं। हम बाएँ, दाएँ या नीचे जा सकते हैं, हमें सबसे लंबा ऐसा रास्ता खोजना होगा जहाँ

  1. पायथन में सबसे लंबे समय तक लगातार बढ़ते सबस्ट्रिंग की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक लोअरकेस स्ट्रिंग s है। इसमें अंग्रेजी अक्षर के साथ-साथ ? प्रतीक। प्रत्येक के लिए ? हमें या तो इसे हटाना होगा या इसे किसी छोटे अक्षर से बदलना होगा। हमें अक्षर a से शुरू होने वाले सबसे लंबे क्रमागत रूप से बढ़ते हुए सबस्ट्रिंग की लंबाई ज्ञात करनी होगी। इसलिए, यदि इनपुट s =vta

  1. पायथन में एक एन-आरी पेड़ में सबसे लंबे पथ की लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक किनारे की सूची है जहां प्रत्येक आइटम धारण कर रहा है (यू, वी) दर्शाता है कि आप वी के माता-पिता हैं। हमें पेड़ में सबसे लंबे पथ की लंबाई का पता लगाना है। पथ की लंबाई उस पथ में 1 + नोड्स की संख्या है। तो, अगर इनपुट पसंद है तो आउटपुट 5 होगा, क्योंकि पथ [1, 4, 5, 7] है, कुल