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

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


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

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

समाधान दृष्टिकोण

इस समस्या को हल करने के लिए हम स्लाइडिंग विंडो और प्रीफिक्स सम का उपयोग करेंगे:

  • data := दी गई बाइनरी स्ट्रिंग से 0s और 1s की लिस्ट
  • one := 0, n := data सरणी की लंबाई
  • summ आकार n की सरणी बनाएं, 0 से भरें, summ[0] := data[0]
  • one := one + data[0]
  • i को 1 से n-1 तक लूप चलाएं:
    • summ[i] := summ[i-1] + data[i]
    • one := one + data[i]
  • ans := one
  • left := 0, right := one - 1
  • जब तक right < n:
    • यदि left 0 है, तो temp := summ[right], अन्यथा temp := summ[right] - summ[left-1]
    • ans := min(ans, one - temp)
    • right और left को 1 से बढ़ाएं
  • ans लौटाएं

पायथन कार्यान्वयन

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. - पायथन में एक संख्या को दूसरी संख्या में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक संख्या start और एक अन्य संख्या end है (start < end), हमें start को end में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ढूंढनी है इन संक्रियाओं का उपयोग करके: 1 से बढ़ाएं 2 से गुणा करें उदाहरण के लिए, यदि इनपुट है start = 5, end = 11, तो आउटपुट होगा 2, क्योंकि हम 2 से ग

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

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

  1. - पायथन प्रोग्राम: 1 से n तक सभी नंबर्स में टोटल सेट बिट्स गिनना

    एक पॉजिटिव इंटीजर n दिया गया है, फिर हम इसे बाइनरी प्रतिनिधित्व में बदलते हैं और टोटल सेट बिट्स की संख्या गिनते हैं।उदाहरणInput: n=3 Output: 4एल्गोरिदमचरण 1: पॉजिटिव इंटीजर डेटा इनपुट करें। चरण 2: फिर इसे बाइनरी फॉर्म में कन्वर्ट करें। चरण 3: वेरिएबल s = 0 इनिशियलाइज़ करें। चरण 4: हर एलिमेंट को ट्रै