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

पायथन में लक्ष्य से कम या बराबर योग वाली सबसे छोटी सबलिस्ट का आकार ज्ञात करने का प्रोग्राम


मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची है, और एक अन्य इनपुट target है, हमें सबसे छोटी सबलिस्ट का आकार ज्ञात करना है जिसका योग मान target के समान या बड़ा हो। यदि ऐसी कोई सबलिस्ट नहीं है तो -1 लौटाएं।

इसलिए, यदि इनपुट nums = [2, 11, -4, 17, 4] target = 19 जैसा है, तो आउटपुट 2 होगा, क्योंकि हम [17, 4] चुनकर कम से कम 19 का योग प्राप्त कर सकते हैं।

हल करने के चरण

  • ps := केवल एक तत्व 0 वाली सूची

  • nums में प्रत्येक num के लिए, करें

    • (ps के अंतिम तत्व + num) को ps के बाद डालें

    • यदि num >= target, तो 1 लौटाएं

  • min_size := infinity

  • q := [0]

  • j := 0

  • i के लिए 1 से ps के आकार तक की रेंज में, करें

    • j := j और q के आकार - 1 का न्यूनतम

      • जब तक j < q का आकार और ps[i] - ps[q[j]] >= target, करें

        • min_size := min_size और (i - q[j]) का न्यूनतम

        • j := j + 1

      • जब तक q और ps[i] <= ps[q का अंतिम तत्व], करें q का अंतिम तत्व हटाएं

      • i को q के अंत में डालें

  • यदि min_size < infinity तो min_size लौटाएं अन्यथा -1

उदाहरण

class Solution:
    def solve(self, nums, target):
        ps = [0]
        for num in nums:
            ps += [ps[-1] + num]
            if num >= target:
                return 1
        min_size = float("inf")
        q = [0]
        j = 0
        for i in range(1, len(ps)):
            j = min(j, len(q) - 1)
            while j < len(q) and ps[i] - ps[q[j]] >= target:
                min_size = min(min_size, i - q[j])
                j += 1
            while q and ps[i] <= ps[q[-1]]:
                q.pop()
            q.append(i)
        return min_size if min_size < float("inf") else -1

ob = Solution()
nums = [2, 11, -4, 17, 4]
target = 19
print(ob.solve(nums, target))

इनपुट

[2, 11, -4, 17, 4], 19

आउटपुट

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

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

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

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

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

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