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

पायथन में सभी 1s को एक साथ समूहित करने के लिए आवश्यक न्यूनतम स्वैप खोजने का कार्यक्रम

मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है, हमें स्ट्रिंग में किसी भी स्थान पर सभी 1 को एक साथ समूहित करने के लिए आवश्यक न्यूनतम संख्या में स्वैप की आवश्यकता है। तो अगर इनपुट "10101001101" जैसा है, तो आउटपुट 3 होगा, जितना संभव हो समाधान "000001111111" है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • डेटा:=दिए गए स्ट्रिंग से बिट्स की एक सूची

  • एक सेट करें:=0, n:=डेटा सरणी की लंबाई

  • आकार n का एक सरणी योग बनाएं, और इसे 0 से भरें, योग सेट करें [0]:=डेटा [0]

  • एक:=एक + डेटा[0]

  • मैं के लिए 1 से n - 1 की सीमा में

    • योग [i]:=योग [i - 1] + डेटा [i]

    • एक:=एक + डेटा[i]

  • उत्तर :=एक

  • बाएँ:=0, दाएँ:=एक – 1

  • जबकि दाएं

    • यदि बायां 0 है, तो अस्थायी:=योग [दाएं], अन्यथा अस्थायी:=योग [दाएं] -

    • सारांश[बाएं - 1]
    • उत्तर:=न्यूनतम उत्तर, एक - अस्थायी

    • दाएं और बाएं 1 से बढ़ाएं

  • वापसी उत्तर

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

class Solution(object):
   def solve(self, data):
      data = list(map(int, list(data)))
      one = 0
      n = len(data)
      summ=[0 for i in range(n)]
      summ[0] = data[0]
      one += data[0]
      for i in range(1,n):
         summ[i] += summ[i-1]+data[i]
         one += data[i]
      ans = one
      left = 0
      right = one-1
      while right <n:
         if left == 0:
            temp = summ[right]
         else:
            temp = summ[right] - summ[left-1]
         ans = min(ans,one-temp)
         right+=1
         left+=1
         return ans
ob = Solution()
print(ob.solve("10101001101"))

इनपुट

"10101001101"

आउटपुट

3

  1. पायथन में सभी बिंदुओं को जोड़ने के लिए न्यूनतम लागत खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास बिंदु (x, y) के रूप में कुछ बिंदुओं के साथ बिंदु नामक एक सरणी है। अब दो बिंदुओं (xi, yi) और (xj, yj) को जोड़ने की लागत उनके बीच मैनहट्टन दूरी है, सूत्र है |xi - xj| + |yi - yj|। हमें सभी बिंदुओं को जोड़ने के लिए न्यूनतम लागत का पता लगाना होगा। इसलिए, यदि इनपुट पॉइंट्स की तरह

  1. पायथन का उपयोग करके सभी नोड्स तक पहुंचने के लिए न्यूनतम संख्या में कोने खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक निर्देशित चक्रीय ग्राफ है, जिसमें n कोने हैं और नोड्स 0 से n-1 तक गिने जाते हैं, ग्राफ को किनारे की सूची द्वारा दर्शाया जाता है, जहां किनारों [i] =(यू, वी) नोड यू से एक निर्देशित किनारे का प्रतिनिधित्व करता है। नोड वी। हमें शिखर का सबसे छोटा सेट ढूंढना है जिससे ग्राफ में सभ

  1. पायथन का उपयोग करके बाइनरी ग्रिड की व्यवस्था करने के लिए न्यूनतम स्वैप खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक n x n बाइनरी मैट्रिक्स है। हम इस पर एक ऑपरेशन कर सकते हैं जैसे, एक चरण में हम दो आसन्न पंक्तियों का चयन करते हैं और उन्हें स्वैप करते हैं। हमें आवश्यक न्यूनतम स्वैप की संख्या गिननी होगी, ताकि मैट्रिक्स के प्रमुख विकर्ण के ऊपर सभी नोड्स 0 हों। यदि ऐसा कोई समाधान नहीं है, तो