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

पायथन में k टावरों को समान ऊंचाई का बनाने के लिए न्यूनतम ईंटों की संख्या खोजने का प्रोग्राम


मान लीजिए हमारे पास टावर ऊंचाइयों की एक सूची है, और एक धनात्मक मान k। हम k टावरों का चयन करना चाहते हैं और अधिक ईंटें जोड़कर उन सभी को समान ऊंचाई का बनाना चाहते हैं, लेकिन यथासंभव कम ईंटों का उपयोग करके। हमें k टावरों को चुनकर उन्हें समान ऊंचाई का बनाने के लिए आवश्यक न्यूनतम ईंटों की संख्या ढूंढनी है।

उदाहरण के लिए, यदि इनपुट heights = [4, 7, 31, 14, 40] और k = 3 है, तो आउटपुट 17 होगा, क्योंकि हम 5, 8, और 15 चुन सकते हैं जिन्हें समान ऊंचाई का बनाने के लिए 17 ईंटों की आवश्यकता होती है।

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

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

  • heights को सॉर्ट करें
  • ans := infinity
  • s := 0 (विंडो सम)
  • प्रत्येक इंडेक्स i और मान x के लिए heights में:
    • s += x
    • यदि i >= k: s -= heights[i-k]
    • यदि i >= k-1:
      • ans := min(ans, x*k - s)
  • ans लौटाएं

उदाहरण कोड

class Solution:
    def solve(self, heights, k):
        heights.sort()
        ans = float("inf")
        s = 0
        for i, x in enumerate(heights):
            s += x
            if i >= k:
                s -= heights[i-k]
            if i >= k-1:
                ans = min(ans, x*k - s)
        return ans

ob = Solution()
heights = [5, 8, 32, 15, 41]
k = 3
print(ob.solve(heights, k))

इनपुट

[5, 8, 32, 15, 41], 3

आउटपुट

17

  1. - पायथन में अंतिम स्थिति तक पहुंचने के लिए आवश्यक न्यूनतम हॉप्स की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक सरणी nums है, जहां सभी तत्व धनात्मक हैं। हम इंडेक्स 0 पर हैं। यहां, सरणी में प्रत्येक तत्व उस स्थिति पर हमारी अधिकतम कूद लंबाई को दर्शाता है। हमारा लक्ष्य अंतिम इंडेक्स (n-1, जहां n nums का आकार है) तक कम से कम कूद के साथ पहुंचना है। इसलिए यदि सरणी [2,3,1,1,4] जैसी है, तो आउटप

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

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

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

    मान लीजिए हमारे पास दो स्ट्रिंग्स s और t हैं, हमें s के लिए आवश्यक न्यूनतम संक्रियाओं की मात्रा ढूंढनी है ताकि t, s का सबस्ट्रिंग बन जाए। अब, प्रत्येक संक्रिया में, हम s में किसी भी स्थिति को चुन सकते हैं और उस स्थिति के वर्ण को किसी अन्य वर्ण में बदल सकते हैं। उदाहरण के लिए, यदि इनपुट है s = abbpq