मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और दूसरा मान k है। आइए अब हम एक ऐसी संक्रिया पर विचार करें जिसमें हम सूची के किसी भी अवयव से 1 घटा सकते हैं। हम इस ऑपरेशन को k बार कर सकते हैं। k ऐसे संक्रियाओं के बाद हमें सूची में न्यूनतम संभव अधिकतम मान ज्ञात करना होगा।
इसलिए, यदि इनपुट अंकों की तरह है =[3, 4, 6, 5] k =6, तो आउटपुट 3 होगा, क्योंकि हम [3,3,3] प्राप्त करने के लिए 4 को एक बार, 6 तीन बार और 5 को दो बार घटा सकते हैं। 3].
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- नंबरों को उल्टे क्रम में क्रमित करें
- मैं :=0
- करा:=अंक[0]
- जबकि k> 0, करें
- जबकि मैं <अंकों और अंकों का आकार [i] वक्र के समान है, करते हैं
- i :=i + 1
- अगर के>=मैं, तो
- k :=k - i
- करा :=curr - 1
- अन्यथा,
- वापसी का क्रम
- जबकि मैं <अंकों और अंकों का आकार [i] वक्र के समान है, करते हैं
- वापसी का क्रम
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution: def solve(self, nums, k): nums.sort(reverse=True) i = 0 curr = nums[0] while k > 0: while i < len(nums) and nums[i] == curr: i += 1 if k >= i: k -= i curr -= 1 else: return curr return curr ob = Solution() nums = [3, 4, 6, 5] k = 6 print(ob.solve(nums, k))
इनपुट
[3, 4, 6, 5], 6
आउटपुट
3