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

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


मान लीजिए हमारे पास nums और costs नामक दो संख्याओं की सूचियां हैं। अब एक ऑपरेशन पर विचार करें जहां हम nums[i] को costs[i] लागत पर बढ़ा या घटा सकते हैं। हम इन ऑपरेशनों को कितनी भी बार कर सकते हैं, और हम nums के सभी तत्वों को बराबर बनाना चाहते हैं। हमें आवश्यक न्यूनतम कुल लागत ढूंढनी है।

उदाहरण के लिए, यदि इनपुट nums = [3, 2, 4], costs = [1, 10, 2] है, तो आउटपुट 5 होगा, क्योंकि हम 3 को 2 में 1 की लागत से घटा सकते हैं। फिर 4 को दो बार 2 की लागत से घटा सकते हैं।

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

  • एक फंक्शन helper() परिभाषित करें जो target लेता है
  • total := 0
  • प्रत्येक i, n के लिए enumerate(nums) में करें:
    • यदि target, n के बराबर नहीं है, तो total := total + |n - target| * costs[i]
  • total वापस करें
  • मुख्य विधि से:
    • low := 0, high := nums का अधिकतम
    • जब तक low < high, करें:
      • mid := (low + high) // 2
      • यदि helper(mid) < helper(mid+1), तो high := mid
      • अन्यथा, low := mid + 1
    • helper(low) वापस करें

उदाहरण

class Solution:
    def solve(self, nums, costs):
        def helper(target):
            total = 0
            for i, n in enumerate(nums):
                if target != n:
                    total += abs(n - target) * costs[i]
            return total
        low, high = 0, max(nums)
        while low < high:
            mid = (low + high) >> 1
            if helper(mid) < helper(mid + 1):
                high = mid
            else:
                low = mid + 1
        return helper(low)
ob = Solution()
nums = [3, 2, 4]
costs = [1, 10, 2]
print(ob.solve(nums, costs))

इनपुट

[3, 2, 4], [1, 10, 2]

आउटपुट

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

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

  1. सभी शिपमेंट पूरा करने के लिए कुल लागत ज्ञात करने का पायथन प्रोग्राम सभी शिपमेंट पूरा करने के लिए कुल लागत ज्ञात करने का पायथन प्रोग्राम

    मान लीजिए हमारे पास ports नामक सूचियों की एक सूची है, जहां ports[i] उन पोर्ट्स की सूची दर्शाता है जिनसे पोर्ट i जुड़ा हुआ है। हमारे पास shipments नामक सूचियों की एक और सूची है जहां प्रत्येक सूची [i, j] क्रम में है जो दर्शाता है कि पोर्ट i से पोर्ट j तक एक शिपमेंट अनुरोध है। और पोर्ट i से पोर्ट j तक

  1. पायथन प्रोग्राम: लिस्ट में एलिमेंट्स का योग ढूंढें पायथन प्रोग्राम: लिस्ट में एलिमेंट्स का योग ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट इनपुट के रूप में एक लिस्ट दिए जाने पर, हमें दी गई लिस्ट का योग निकालने की आवश्यकता है। यहां हमारे पास दो दृष्टिकोण हैं: बिल्ट-इन फंक्शन का उपयोग करना और ब्रूट-फोर्स दृष्टिकोण का उपयोग