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

पायथन में सबसे छोटे समूह का अधिकतम संभव मूल्य खोजने का कार्यक्रम

मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और दूसरा मान k है। हमें सूची को k सन्निहित समूहों में विभाजित करना होगा। सबसे छोटा समूह वह होता है जिसका योग सभी समूहों में सबसे छोटा होता है। अतः सबसे छोटे समूह का अधिकतम संभव मान ज्ञात कीजिए।

इसलिए, यदि इनपुट संख्या =[2, 6, 4, 5, 8] k =3 की तरह है, तो आउटपुट 8 होगा, क्योंकि हम सूची को तीन समूहों में विभाजित कर सकते हैं जैसे:[2, 6], [4 , 5], [8]। तो न्यूनतम समूह का योग 8 है।

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

  • फ़ंक्शन को परिभाषित करें is_divisible() । यह लक्ष्य लेगा

  • अगर लक्ष्य <=1, तो

    • सही लौटें

  • num_chunks :=0, current_sum :=0

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

    • current_sum :=current_sum + x

    • अगर current_sum>=लक्ष्य, तो

      • current_sum :=0

      • num_chunks :=num_chunks + 1

      • अगर num_chunks k के समान है, तो

        • सही लौटें

  • झूठी वापसी

  • मुख्य विधि से निम्न कार्य करें -

  • बायां :=1

  • दाएं:=(संख्याओं में सभी तत्वों का योग) / k + 1

  • जबकि बाएं <दाएं -1, करें

    • मध्य:=(बाएं + दाएं) / 2

    • यदि is_divisible(मध्य) सत्य है, तो

      • बाएं :=मध्य

    • अन्यथा,

      • दाएं:=मध्य

  • बाएं लौटें

उदाहरण (पायथन)

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

class Solution:
   def solve(self, nums, k):
      def is_divisible(target):
         if target <= 1:
            return True
         num_chunks = 0
         current_sum = 0
         for x in nums:
            current_sum += x
            if current_sum >= target:
               current_sum = 0
               num_chunks += 1
               if num_chunks == k:
                  return True
         return False
      left = 1
      right = sum(nums) // k + 1
      while left < right - 1:
         mid = (left + right) // 2
         if is_divisible(mid):
            left = mid
         else:
            right = mid
      return left
ob = Solution()
nums = [2, 6, 4, 5, 8]
k = 3
print(ob.solve(nums, k))

इनपुट

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

आउटपुट

8

  1. पायथन में समान लंबाई के k रिबन की अधिकतम लंबाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास सकारात्मक संख्याओं की एक सूची है, जो रिबन की लंबाई का प्रतिनिधित्व करती है और एक मान k भी है। हम जितनी बार चाहें रिबन काट सकते हैं, हमें सबसे बड़ी लंबाई r ढूंढनी होगी जैसे कि हमारे पास लंबाई r के k रिबन हो सकें। अगर हमें ऐसा समाधान नहीं मिल रहा है, तो -1 पर लौटें। इसलिए, यदि

  1. पायथन में दिए गए संख्याओं के सेट का उपयोग करके व्यंजक का अधिकतम संभव मान ज्ञात करने का कार्यक्रम

    मान लीजिए कि हमारे पास nums1 और nums2 नामक दो सरणियाँ हैं, उनके पास तत्वों की संख्या समान है। अब एक सेट S पर विचार करें जिसमें 1 से N तक N तत्व हैं। हमें (nums1[i1] + nums1[i2] + का मान ज्ञात करना है। .. nums1[ik])^2 + (nums2[i1] + nums2[i2] + ... nums2[ik])^2 जहां {i1, i2, ... ik} सेट एस का खाली उप

  1. पायथन में अधिकतम भवन ऊंचाई खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक मान n है और जोड़े की एक और सूची है जिसे प्रतिबंध कहा जाता है। हम एक शहर में नई इमारतें बनाना चाहते हैं। लेकिन कुछ प्रतिबंध हैं। हम एक लाइन में बना सकते हैं और इमारतों को 1 से n तक लेबल किया जाता है। प्रतिबंधों के दो पैरामीटर हैं, इसलिए प्रतिबंध [i] =(id_i, max_height_i) इंग