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

पायथन में k सबसे बड़े योग वाले सबलिस्ट्स खोजकर उनके योग को आरोही क्रम में लौटाने का प्रोग्राम


मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, और एक मान k, हमें k सबलिस्ट्स ढूंढनी हैं जिनके योग सबसे बड़े हैं और उनके योग को नॉन-डिक्रीजिंग क्रम में लौटाना है।

उदाहरण के लिए, यदि इनपुट nums = [2, 4, 5, -100, 12, -30, 6, -2, 6] और k = 3 है, तो आउटपुट [10, 11, 12] होगा, क्योंकि ये 3 सबलिस्ट्स हैं जिनके सबसे बड़े योग हैं: [6,-2,6], [2,4,5], [12]।

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

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

  • ps := आकार len(nums)+1 की सूची, 0 से भरी (प्रीफिक्स सम)
  • ps[i+1] = nums[i] + ps[i] प्रत्येक i के लिए
  • hp := एक मैक्स हीप (नेगेटिव मान स्टोर करके)
  • सभी i < j के लिए: -(ps[j]-ps[i]) को हीप में डालें
  • हीप से k तत्व पॉप करें, नेगेट करें, उल्टा करें और लौटाएं

उदाहरण कोड

from heapq import heappop, heappush

class Solution:
    def solve(self, nums, k):
        ps = [0] * (len(nums) + 1)
        for i, v in enumerate(nums):
            ps[i+1] = v + ps[i]
        hp = []
        for i in range(len(ps)):
            for j in range(i+1, len(ps)):
                heappush(hp, -(ps[j] - ps[i]))
        res = []
        for _ in range(k):
            res.append(-heappop(hp))
        return list(reversed(res))

ob = Solution()
nums = [2, 4, 5, -100, 12, -30, 6, -2, 6]
k = 3
print(ob.solve(nums, k))

इनपुट

[2, 4, 5, -100, 12, -30, 6, -2, 6], 3

आउटपुट

[10, 11, 12]

  1. - पायथन में K और -K

    मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, हमें सबसे बड़ी संख्या k ढूंढनी है जहां k और -k दोनों nums में मौजूद हों (वे समान संख्या हो सकते हैं)। यदि ऐसा कोई तत्व नहीं है, तो -1 लौटाएं। उदाहरण के लिए, यदि इनपुट है [-5, 2, 9, -6, 5, -9], तो आउटपुट होगा 9। हल करने के चरण L1 := nums में 0 औ

  1. - पायथन में सबसे बड़ी संख्या

    मान लीजिए गैर-ऋणात्मक पूर्णांकों की एक सूची है, हमें उन्हें इस तरह व्यवस्थित करना है कि वे सबसे बड़ी संख्या बनाएं। इसलिए यदि सरणी [10, 2] है, तो सबसे बड़ी संख्या 210 होगी।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -संख्याओं को व्यवस्थित करें जहां सबसे महत्वपूर्ण अंक अधिक हों, उन्हें पहले रखें, इ

  1. - पायथन प्रोग्राम: लिस्ट में सबसे बड़ा, सबसे छोटा, दूसरा सबसे बड़ा, और दूसरा सबसे छोटा ढूंढना

    ऐरे दिया गया है, हमें अधिकतम, न्यूनतम, दूसरा सबसे बड़ा, दूसरा सबसे छोटा नंबर ढूंढना है।एल्गोरिदमचरण 1: लिस्ट एलिमेंट इनपुट करें। चरण 2: हम एक नंबर लेते हैं और इसकी तुलना लिस्ट में मौजूद सभी अन्य नंबर्स से करते हैं। चरण 3: अधिकतम, न्यूनतम, दूसरा सबसे बड़ा, दूसरा सबसे छोटा नंबर प्राप्त करें।उदाहरण कोड