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

पायथन में सेल फ्यूजन

समस्या विवरण

संख्याओं की एक सूची cells दी गई है जो सेल्स के आकार दर्शाती है। प्रत्येक इटरेशन में, दो सबसे बड़े सेल्स a और b इंटरैक्ट करते हैं:

  • यदि a == b: दोनों मर जाते हैं
  • अन्यथा: वे मर्ज होते हैं, नया आकार = floor((a+b)/3)

अंतिम सेल का आकार वापस करें, या -1 यदि कोई सेल न बचे।

उदाहरण

इनपुट: [20, 40, 40, 30]

आउटपुट: 16

व्याख्या: पहले 40 और 40 मर जाते हैं, फिर 20 और 30 → floor(50/3) = 16

एल्गोरिदम (हीप का उपयोग)

  1. सभी मानों को नेगेटिव करके मैक्स-हीप बनाएं (पायथन में heapq मिन-हीप है)
  2. जब तक हीप में ≥2 तत्व हैं:
    • दो सबसे बड़े निकालें (नेगेटिव करके मूल मान प्राप्त करें)
    • यदि असमान हैं, तो floor((a+b)/3) को नेगेटिव करके हीप में डालें
  3. यदि हीप खाली नहीं, तो शेष मान वापस करें (नेगेटिव करके), अन्यथा -1

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

from heapq import heapify, heappop, heappush

class Solution:
    def solve(self, cells):
        cells = [-x for x in cells]
        heapify(cells)
        while len(cells) > 1:
            first, second = -heappop(cells), -heappop(cells)
            if first != second:
                heappush(cells, -((first + second) // 3))
        return -cells[0] if cells else -1

ob = Solution()
cells = [20, 40, 40, 30]
print(ob.solve(cells))

इनपुट

[20, 40, 40, 30]

आउटपुट

16
  1. पायथन में जांचें कि शतरंज बोर्ड पर क्वीन दिए गए सेल पर हमला कर सकती है या नहीं पायथन में जांचें कि शतरंज बोर्ड पर क्वीन दिए गए सेल पर हमला कर सकती है या नहीं

    मान लीजिए हमारे पास शतरंज बोर्ड पर क्वीन और प्रतिद्वंद्वी के लिए दो निर्देशांक हैं। ये बिंदु Q और O हैं। हमें यह जांचना है कि क्या क्वीन प्रतिद्वंद्वी पर हमला कर सकती है या नहीं। जैसा कि हम जानते हैं, क्वीन उसी पंक्ति, उसी स्तंभ और विकर्ण में हमला कर सकती है। उदाहरण के लिए, यदि इनपुट Q = (1, 1), O

  1. पायथन में issuperset() फंक्शन पायथन में issuperset() फंक्शन

    इस लेख में, हम पायथन में issuperset() और विभिन्न क्षेत्रों में इसके कार्यान्वयन के बारे में जानेंगे।यह मेथड बूलियन True वापस करता है यदि सेट B के सभी तत्व सेट A के सभी तत्वों को समाहित करते हैं जिसे तर्क के रूप में पारित किया जाता है और झूठा वापस करता है यदि A के सभी तत्व B में मौजूद नहीं हैं।इसका म

  1. माइक्रोसॉफ्ट एक्सेल में सेल्स को विभाजित करने के 3 तरीके माइक्रोसॉफ्ट एक्सेल में सेल्स को विभाजित करने के 3 तरीके

    कभी-कभी आपके पास एक्सेल में एक सेल में डेटा के कई टुकड़े होते हैं। यह अक्सर एक्सेल स्प्रेडशीट को संयोजित करने का प्रयास करते समय या डेटा आयात करते समय होता है। बस इसके साथ निपटने के बजाय, आप माइक्रोसॉफ्ट एक्सेल में सेल्स को विभाजित कर सकते हैं। हालांकि, प्रक्रिया केवल एक विभाजन विकल्प होने जितनी सी