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

पायथन में समान आकार की 3 नॉन-ओवरलैपिंग सबलिस्ट का सबसे बड़ा योग खोजने का प्रोग्राम


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

उदाहरण के लिए, यदि इनपुट nums = [2, 2, 2, -6, 4, 4, 4, -8, 3, 3, 3], k = 3 है, तो आउटपुट 27 होगा, क्योंकि हम सबलिस्ट [2, 2, 2], [4, 4, 4], और [3, 3, 3] चुन सकते हैं, कुल योग 27 है।

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

इस समस्या को हल करने के लिए हम प्रीफिक्स सम और स्लाइडिंग विंडो का उपयोग करेंगे:

  • P := [0] (प्रीफिक्स सम सरणी)
  • A में प्रत्येक x के लिए, P[-1] + x को P के अंत में जोड़ें
  • Q := [P[i + K] - P[i] for i in range(0, len(P) - K)] (आकार K की सभी सबलिस्ट के योग)
  • prefix := Q की कॉपी, suffix := Q की कॉपी
  • i को 0 से Q के आकार - 2 तक लूप चलाएं:
    • prefix[i + 1] := max(prefix[i + 1], prefix[i])
    • suffix[~(i + 1)] := max(suffix[~(i + 1)], suffix[~i])
  • ret = max(Q[i] + prefix[i - K] + suffix[i + K] for i in range(K, len(Q) - K))
  • ret लौटाएं

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

class Solution:
    def solve(self, A, K):
        P = [0]
        for x in A:
            P.append(P[-1] + x)
        Q = [P[i + K] - P[i] for i in range(len(P) - K)]
        prefix = Q[:]
        suffix = Q[:]
        for i in range(len(Q) - 1):
            prefix[i + 1] = max(prefix[i + 1], prefix[i])
            suffix[~(i + 1)] = max(suffix[~(i + 1)], suffix[~i])
        return max(Q[i] + prefix[i - K] + suffix[i + K] for i in range(K, len(Q) - K))

ob = Solution()
nums = [2, 2, 2, -6, 4, 4, 4, -8, 3, 3, 3]
k = 3
print(ob.solve(nums, k))

इनपुट

[2, 2, 2, -6, 4, 4, 4, -8, 3, 3, 3], 3

आउटपुट

27
  1. Python प्रोग्राम में ऐरे का योग खोजना Python प्रोग्राम में ऐरे का योग खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक ऐरे दिया गया है, हमें ऐरे का योग निकालने की आवश्यकता है। पूरे ऐरे को पार करने और प्रत्येक इंडेक्स पर तत्व को जोड़कर योग प्राप्त करने का ब्रूट-फोर्स दृष्टिकोण नीचे चर्चा किया गया है। उदाहरण # sum फ़ंक्शन def

  1. पायथन प्रोग्राम: लिस्ट का संचयी योग ज्ञात करें पायथन प्रोग्राम: लिस्ट का संचयी योग ज्ञात करें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक लिस्ट दी गई है, हमें संचयी योग के साथ एक लिस्ट बनानी है। उदाहरण # संचयी योग def Cumulative(l): new = [] cumsum = 0 for element in l: cumsum += element new.append(cumsum) return new # ड्राइवर

  1. पायथन प्रोग्राम: ऐरे का योग ढूंढें पायथन प्रोग्राम: ऐरे का योग ढूंढें

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