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

सबसे छोटे उपन्यासकार का आकार खोजने का कार्यक्रम जिसका योग कम से कम पायथन में लक्ष्य है

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

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

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

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

  • अंकों में प्रत्येक अंक के लिए, करें

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

    • यदि संख्या>=लक्ष्य, तो

      • वापसी 1

  • min_size :=inf

  • क्यू:=[0]

  • जे:=0

  • 1 से लेकर ps के आकार तक के लिए, करें

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

      • जबकि j =लक्ष्य, करें

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

        • जे:=जे + 1

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

        • q से अंतिम तत्व हटाएं

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

  • वापसी min_size अगर min_size

उदाहरण

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

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. पायथन प्रोग्राम में सरणी का योग ज्ञात करें

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

  1. एक सूची का संचयी योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें संचयी राशि के साथ एक सूची बनानी होगी। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # cumulative sum def Cumulative(l):    new = []    cumsum = 0   &nb

  1. सरणी का योग खोजने के लिए पायथन कार्यक्रम

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