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

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


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

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे (स्लाइडिंग विंडो + प्रीफिक्स सम):

  • data := दी गई स्ट्रिंग से बिट्स की सूची।

  • one := 0, n := len(data)।

  • summ आकार n की सरणी बनाएं और 0 से भरें, summ[0] = data[0]।

  • one += data[0]।

  • i को 1 से n-1 तक: summ[i] = summ[i-1] + data[i]; 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 += 1; left += 1।

  • ans लौटाएं।

उदाहरण

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. Python में सभी बिंदुओं को जोड़ने की न्यूनतम लागत खोजने का प्रोग्राम Python में सभी बिंदुओं को जोड़ने की न्यूनतम लागत खोजने का प्रोग्राम

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

  1. Python से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें? Python से DAG में सभी नोड्स तक पहुंचने के लिए मिनिमम वर्टेक्स कैसे ढूंढें?

    डायरेक्टेड एसाइक्लिक ग्राफ (DAG) में जिन वर्टेक्सेज़ का इन-डिग्री 0 है, उनसे सभी नोड्स पहुंचे जा सकते हैं। एल्गोरिदम सभी नोड्स का सेट बनाएं (0 से n-1)। सभी एजेज़ के डेस्टिनेशन नोड्स (v) का सेट बनाएं। सोर्स नोड्स = सभी नोड्स - डेस्टिनेशन नोड्स (यानी इन-डिग्री 0 वाले)। यही मिनिमम वर्टेक्स सेट है। उद

  1. Python से बाइनरी ग्रिड में मेजर डायगोनल के ऊपर ज़ीरोज़ के लिए मिनिमम स्वैप्स कैसे ढूंढें? Python से बाइनरी ग्रिड में मेजर डायगोनल के ऊपर ज़ीरोज़ के लिए मिनिमम स्वैप्स कैसे ढूंढें?

    n×n बाइनरी मैट्रिक्स में एडजेसेंट रो स्वैप्स से मेजर डायगोनल के ऊपर सभी एलिमेंट्स 0 करने के लिए मिनिमम स्वैप्स ढूंढें। एल्गोरिदम प्रत्येक रो के लिए राइटमोस्ट 1 की पोजीशन ढूंढें → m[i] = n - j - 1 (डायगोनल से दूरी)। ग्रीडी: i=0 से n-1, ऐसी रो ढूंढें जिसका = n-i-1 हो (यानी डायगोनल के ऊपर 1 न हो)। उसे