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

पायथन में K सबलिस्ट बढ़ाने के बाद न्यूनतम मान को अधिकतम करने का प्रोग्राम


मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और दो मान, size और k हैं। अब मान लीजिए एक ऑपरेशन है जहां हम लंबाई size की एक सन्निकट सबलिस्ट लेते हैं और प्रत्येक तत्व को एक से बढ़ाते हैं। हम इस ऑपरेशन को k बार कर सकते हैं, हमें nums में संभव सबसे बड़ा न्यूनतम मान ढूंढना है।

इसलिए, यदि इनपुट nums = [2, 5, 2, 2, 7], size = 3, k = 2 जैसा है, तो आउटपुट 3 होगा, क्योंकि हम [2, 5, 2] को बढ़ाकर [3, 6, 3, 2, 7] प्राप्त कर सकते हैं और फिर [6, 3, 2] को बढ़ाकर [3, 7, 4, 3, 7] प्राप्त कर सकते हैं, न्यूनतम 3 है।

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

  • एक फ़ंक्शन possible() परिभाषित करें। यह target लेगा
  • events := आकार N की एक सूची, और 0 से भरें
  • moves := 0, s := 0
  • i के लिए 0 से N तक की रेंज में, करें
    • s := s + events[i]
    • delta := target - (A[i] + s)
    • यदि delta > 0, तो
      • moves := moves + delta
      • s := s + delta
      • यदि i + size < N, तो
        • events[i + size] := events[i + size] - delta
  • यदि moves <= K तो true वापस करें
  • मुख्य विधि से, निम्नलिखित करें
  • N := A का आकार
  • left := 0, right := 10^10
  • जब तक left < right, करें
    • mid := (left + right + 1) / 2
    • यदि possible(mid), तो
      • left := mid
    • अन्यथा,
      • right := mid - 1
  • left वापस करें

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

उदाहरण

class Solution:    def solve(self, A, size, K):       N = len(A)    def possible(target):       events = [0] * N       moves = s = 0       for i in range(N):          s += events[i]          delta = target - (A[i] + s)          if delta > 0:             moves += delta             s += delta             if i + size < N:                events[i + size] -= delta                return moves <= K                left, right = 0, 10 ** 10                while left < right:                   mid = (left + right + 1)//2                if possible(mid):                   left = mid                else:                   right = mid - 1       return left ob = Solution() nums = [2, 5, 2, 2, 7] size = 3 k = 2 print(ob.solve(nums, size, k))

इनपुट

[2, 5, 2, 2, 7], 3, 2

आउटपुट

3

  1. Python में फेरिस व्हील से अधिकतम लाभ के लिए न्यूनतम रोटेशन खोजने का प्रोग्राम Python में फेरिस व्हील से अधिकतम लाभ के लिए न्यूनतम रोटेशन खोजने का प्रोग्राम

    मान लीजिए चार केबिन वाला एक फेरिस व्हील है और प्रत्येक केबिन में चार यात्री बैठ सकते हैं। पहिया वामावर्त घूमता है, और प्रत्येक रोटेशन के लिए, इसकी लागत run राशि होती है। अब हमारे पास एक ऐरे cust है जिसमें n आइटम हैं और प्रत्येक आइटम i iवीं रोटेशन से पहले फेरिस व्हील में बैठने की प्रतीक्षा कर रहे लो

  1. Python में बाल्टी में गेंदों के बीच न्यूनतम बल को अधिकतम करने का प्रोग्राम Python में बाल्टी में गेंदों के बीच न्यूनतम बल को अधिकतम करने का प्रोग्राम

    मान लीजिए हमें कई बाल्टियाँ और x संख्या में गेंदें दी गई हैं। यदि गेंदों को बाल्टी में डाला जाता है, तो उनके भीतर एक विशेष बल कार्य करता है और हमें गेंदों को इस तरह रखने का तरीका ढूंढना है कि दो गेंदों के बीच न्यूनतम बल अधिकतम हो। पोजीशन p और q की बाल्टी में दो गेंदों के बीच बल |p - q| है। हमें दिय

  1. पायथन में मर्जिंग के बाद न्यूनतम रंगों की संख्या खोजने का प्रोग्राम पायथन में मर्जिंग के बाद न्यूनतम रंगों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास रंगों (R, G, B) की एक लिस्ट है। अब यदि दो अलग-अलग रंग अगल-बगल हैं तो वे तीसरे रंग के एकल रंग आइटम में बदल सकते हैं। हमें किसी भी संभावित परिवर्तन अनुक्रम के बाद शेष सबसे छोटी संख्या ढूंढनी है।उदाहरण के लिए, यदि इनपुट colors = [G, R, G, B, R] है, तो आउटपुट 1 होगा क्योंकि यह नीचे द