मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और एक मान k है। अब एक ऑपरेशन पर विचार करें जहां हम सूची में किसी भी तत्व से 1 घटा सकते हैं। हम इस ऑपरेशन को k बार कर सकते हैं। हमें k ऐसे ऑपरेशन्स के बाद सूची में न्यूनतम संभावित अधिकतम मान ढूंढना है।
उदाहरण के लिए, यदि इनपुट nums = [3, 4, 6, 5] और k = 6 है, तो आउटपुट 3 होगा, क्योंकि हम 4 को एक बार, 6 को तीन बार और 5 को दो बार घटाकर [3,3,3,3] प्राप्त कर सकते हैं।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
- संख्याओं को उल्टे क्रम में सॉर्ट करें
i := 0curr := nums[0]k > 0होने तक, निम्न करें:i < len(nums)औरnums[i] == currहोने तक:i := i + 1
- यदि
k >= i, तोk := k - icurr := curr - 1
- अन्यथा,
currलौटाएं
currलौटाएं
उदाहरण कोड
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