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

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


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

उदाहरण के लिए, nums = [2,6,4,5,8], k=3 के लिए आउटपुट 8 होगा (समूह: [2,6], [4,5], [8], न्यूनतम योग 8)।

एल्गोरिदम (बाइनरी सर्च)

  • is_divisible(target) फ़ंक्शन परिभाषित करें:
    • यदि target <= 1, तो True वापस करें
    • num_chunks=0, current_sum=0
    • प्रत्येक x in nums के लिए:
      • current_sum += x
      • यदि current_sum >= target:
        • current_sum=0, num_chunks++
        • यदि num_chunks == k, तो True वापस करें
    • False वापस करें
  • मुख्य विधि से:
    • left=1, right=sum(nums)//k + 1
    • जब left < right-1:
      • mid = (left+right)//2
      • यदि is_divisible(mid), तो left=mid अन्यथा right=mid
    • left वापस करें

उदाहरण

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. - Python प्रोग्राम - k रिबन की समान लंबाई की अधिकतम लंबाई खोजें

    सकारात्मक संख्याओं की सूची दी गई है जो रिबन की लंबाई दर्शाती है, और एक मान k। हम रिबन को जितनी बार चाहें काट सकते हैं, हमें सबसे बड़ी लंबाई r खोजनी है जिससे हम k रिबन लंबाई r के प्राप्त कर सकें। यदि ऐसा समाधान नहीं मिलता, तो -1 लौटाएं। उदाहरण इनपुट: ribbons = [1, 2, 5, 7, 15], k = 5 आउटपुट: 5 व्याख

  1. - पायथन में दी गई संख्याओं के सेट से एक्सप्रेशन का अधिकतम संभव मान ढूंढना

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

  1. Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें Python में इमारतों की अधिकतम ऊंचाई ज्ञात करें

    n इमारतें एक पंक्ति में (1 से n लेबल)। प्रतिबंध: restrictions[i] = (id, max_height)। नियम: ऊंचाई ≥ 0, पहली इमारत की ऊंचाई = 0, आसन्न इमारतों में ऊंचाई अंतर ≤ 1। अधिकतम संभव ऊंचाई खोजें। एल्गोरिदम: दो पास + शिखर गणना प्रतिबंधों को id द्वारा सॉर्ट करें फॉरवर्ड पास: बाएं से दाएं, प्रत्येक प्रतिबंध को