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

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

मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है, और हम किसी भी दो बिट्स को स्वैप कर सकते हैं। हमें सभी 1 को एक साथ समूहबद्ध करने के लिए आवश्यक न्यूनतम संख्या में स्वैप का पता लगाना होगा।

इसलिए, यदि इनपुट s ="0111001" जैसा है, तो आउटपुट 1 होगा, क्योंकि हम ये स्वैप कर सकते हैं:0111001 -> 1111000।

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

  • डेटा:=दिए गए बाइनरी स्ट्रिंग से 0s और 1s की सूची
  • एक सेट करें:=0, n:=डेटा सरणी की लंबाई
  • आकार n का एक सरणी योग बनाएं, और इसे 0 से भरें, योग सेट करें[0] :=data[0]
  • एक:=एक + डेटा[0]
  • मैं के लिए 1 से n - 1 की सीमा में
    • योग[i] :=योग[i - 1] + डेटा[i]
    • एक:=एक + डेटा[i]
  • उत्तर:=एक
  • बाएं:=0, दाएं:=एक – 1
  • जबकि दाएं
  • यदि बायां 0 है, तो अस्थायी:=योग[दाएं], अन्यथा अस्थायी:=योग[दाएं] - योग[बाएं - 1]
  • उत्तर:=न्यूनतम उत्तर, एक - अस्थायी
  • दाएं और बाएं 1 से बढ़ाएं
  • वापसी उत्तर
  • उदाहरण (पायथन)

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

    class Solution(object):
       def solve(self, s):
          data = list(map(int, list(s)))
          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()
    s = "0111001"
    print(ob.solve(s))

    इनपुट

    "0111001"

    आउटपुट

    1

    1. पायथन में एक नंबर से दूसरे नंबर बनाने के लिए आवश्यक न्यूनतम संख्या में संचालन खोजने का कार्यक्रम

      मान लीजिए कि हमारे पास एक नंबर स्टार्ट है और दूसरा नंबर एंड (स्टार्ट <एंड) है, हमें इन ऑपरेशंस का उपयोग करके स्टार्ट टू एंड को कन्वर्ट करने के लिए आवश्यक ऑपरेशंस की न्यूनतम संख्या ज्ञात करनी होगी - 1 से वृद्धि 2 से गुणा करें इसलिए, यदि इनपुट प्रारंभ =5, अंत =11 जैसा है, तो आउटपुट 2 होगा, क्योंकि

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

      मान लीजिए कि हमारे पास एक बाइनरी सरणी डेटा है, हमें सरणी में किसी भी स्थान पर सभी 1 के संग्रह को एक साथ समूहित करने के लिए आवश्यक स्वैप की न्यूनतम संख्या ज्ञात करनी होगी। तो यदि सरणी [1,0,1,0,1,0,0,1,1,0,1] की तरह है, तो आउटपुट 3 होगा, जैसा कि संभव समाधान है [0,0,0,0, 0,1,1,1,1,1,1] इसे हल करने के

    1. 1 से n तक सभी संख्याओं में कुल सेट बिट्स को गिनने के लिए पायथन प्रोग्राम।

      एक सकारात्मक पूर्णांक n को देखते हुए, हम इसके द्विआधारी प्रतिनिधित्व में बदल जाते हैं और सेट बिट्स की कुल संख्या की गणना करते हैं। उदाहरण Input : n=3 Output : 4 एल्गोरिदम Step 1: Input a positive integer data. Step 2: then convert it to binary form. Step 3: initialize the variable s = 0. Step 4: tra