मान लीजिए हमारे पास स्टैक की एक सूची है, हम किसी भी स्टैक या स्टैक को ले सकते हैं और उससे कितने भी एलिमेंट पॉप कर सकते हैं। हमें वह अधिकतम योग ढूंढना है जिसे प्राप्त किया जा सकता है जैसे कि सभी स्टैक का समान योग मान हो।
तो, यदि इनपुट stacks = [[3, 4, 5, 6], [5, 6, 1, 4, 4], [10, 2, 2, 2]] जैसा है, तो आउटपुट 12 होगा, क्योंकि हम इस तरह ऑपरेशन कर सकते हैं:
- पहले स्टैक से [6] पॉप करें हमें [3, 4, 5] मिलता है योग 12 है।
- दूसरे स्टैक से [4, 4] पॉप करें हमें [5, 6, 1] मिलता है योग 12 है।
- तीसरे स्टैक से [2, 2] पॉप करें हमें [10, 2] मिलता है योग 12 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- sums := एक खाली मैप
- stacks में प्रत्येक stk के लिए, करें
- s := 0
- stk में प्रत्येक n के लिए, करें
- s := s + n
- sums[s] := sums[s] + 1
- ans := 0
- sums के प्रत्येक कुंजी-मान जोड़े (s, f) के लिए, करें
- यदि f >= स्टैक काउंट और s > ans, तो ans := s
- ans लौटाएं
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
from collections import defaultdict
class Solution:
def solve(self, stacks):
sums = defaultdict(int)
for stk in stacks:
s = 0
for n in stk:
s += n
sums[s] += 1
ans = 0
for s, f in sums.items():
if f >= len(stacks) and s > ans:
ans = s
return ans
ob1 = Solution()
stacks = [
[3, 4, 5, 6],
[5, 6, 1, 4, 4],
[10, 2, 2, 2]
]
print(ob1.solve(stacks))
इनपुट
stacks = [ [3, 4, 5, 6], [5, 6, 1, 4, 4], [10, 2, 2, 2] ]
आउटपुट
12