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

पायथन में अंतिम पत्थर का वजन


मान लीजिए हमारे पास कुछ चट्टानें हैं, प्रत्येक चट्टान का एक पॉजिटिव इंटीजर वजन है। प्रत्येक चाल में, हम दो सबसे भारी चट्टानों को लेंगे और उन्हें एक साथ तोड़ेंगे। मान लीजिए पत्थरों का वजन x और y है और x <= y। इस तोड़ का परिणाम दो प्रकार का हो सकता है।

  • यदि x = y, तो दोनों पत्थर पूरी तरह से नष्ट हो जाते हैं;
  • अन्यथा जब x != y, तो वजन x का पत्थर पूरी तरह से नष्ट हो जाता है, और वजन y के पत्थर का नया वजन y-x हो जाता है।

अंत में, अधिकतम 1 पत्थर बचता है। हमें इस पत्थर का वजन ढूंढना है (0 जब कोई पत्थर न बचे।)

इसलिए यदि पत्थरों के वजन [2,7,4,1,8,1] हैं, तो परिणाम 1 होगा। पहले 7 और 8 चुनें, फिर 1 प्राप्त करें, तो ऐरे [2,4,1,1,1] होगा, दूसरी बार 2 और 4 लें। ऐरे [2,1,1,1] होगा, उसके बाद 2 और 1 चुनें, ऐरे [1,1,1] होगा, फिर वजन 1 के दो पत्थर चुनें, तो दोनों नष्ट हो जाएंगे, तो ऐरे [1] होगा। यह उत्तर है।

समाधान के चरण

  • यदि पत्थर वजन ऐरे W में कोई एलिमेंट नहीं है, तो 0 लौटाएं
  • यदि W में केवल एक एलिमेंट है तो W[0] लौटाएं
  • जब तक W में एक से अधिक एलिमेंट्स हैं
    • W को सॉर्ट करें
    • s1 := W का अंतिम एलिमेंट, s2 := W का अंतिम से दूसरा एलिमेंट
    • यदि s1 = s2, तो s1 और s2 को W से हटा दें
    • अन्यथा s1 := |s1 - s2|, W से अंतिम एलिमेंट हटाएं, फिर s1 को W का अंतिम एलिमेंट सेट करें
  • यदि W में एक एलिमेंट है, तो वह एलिमेंट लौटाएं, अन्यथा 0 लौटाएं

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

class Solution(object):
    def lastStoneWeight(self, stones):
        """
        :type stones: List[int]
        :rtype: int
        """
        if len(stones) == 0:
            return 0
        if len(stones) == 1:
            return stones[0]
        while len(stones) > 1:
            stones.sort()
            s1, s2 = stones[-1], stones[-2]
            if s1 == s2:
                stones.pop(-1)
                stones.pop(-1)
            else:
                s1 = abs(s1 - s2)
                stones.pop(-1)
                stones[-1] = s1
        if len(stones):
            return stones[-1]
        return 0

ob1 = Solution()
print(ob1.lastStoneWeight([2,7,4,1,6,1]))

इनपुट

[2,7,4,1,6,1]

आउटपुट

1

  1. - Python प्रोग्राम से सूची में पहले और अंतिम तत्वों को इंटरचेंज करना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें अंतिम तत्व को पहले तत्व के साथ स्वैप करने की आवश्यकता है। समस्या को हल करने के लिए 4 दृष्टिकोण हैं जैसा कि नीचे चर्चा की गई है। दृष्टिकोण 1 - ब्रूट-फोर्स दृष्टिकोण उदाहरण def swapLast(Lis

  1. - Python में लिस्ट का लास्ट एलिमेंट कैसे प्राप्त करें?

    Python सीक्वेंस, जिसमें लिस्ट ऑब्जेक्ट शामिल है, इंडेक्सिंग की अनुमति देता है। लिस्ट में किसी भी एलिमेंट को जीरो-बेस्ड इंडेक्स का उपयोग करके एक्सेस किया जा सकता है। यदि इंडेक्स नेगेटिव नंबर है, तो इंडेक्स की गिनती अंत से शुरू होती है। चूंकि हम लिस्ट में लास्ट एलिमेंट चाहते हैं, -1 को इंडेक्स के रूप

  1. - Python में महीने का अंतिम दिन कैसे प्राप्त करें?

    आप कैलेंडर मॉड्यूल का उपयोग करके महीने के पहले दिन का वीकडे और महीने में दिनों की संख्या ढूंढ सकते हैं। इस जानकारी का उपयोग करके आप आसानी से महीने का अंतिम दिन प्राप्त कर सकते हैं। कैलेंडर मॉड्यूल में एक मेथड, monthrange(year, month) है जो निर्दिष्ट वर्ष और महीने के लिए महीने के पहले दिन का वीकडे और