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

पायथन में सभी 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]

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

  • एक सेट करें:=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 minSwaps(self, 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.minSwaps([1,0,1,0,1,0,0,1,1,0,1]))

    इनपुट

    [1,0,1,0,1,0,0,1,1,0,1]

    आउटपुट

    3

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

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

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

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

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

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