मान लीजिए हमारे पास एक सरणी nums और एक अन्य मान k है। एक ऑपरेशन में, हम nums का एक इंडेक्स चुन सकते हैं और उस इंडेक्स पर तत्व को 1 से बढ़ा सकते हैं। हमें अधिकतम k ऑपरेशन करने के बाद किसी तत्व की अधिकतम संभव बारंबारता ढूंढनी है।
उदाहरण के लिए, यदि इनपुट है nums = [8,3,6], k = 9, तो आउटपुट 3 होगा क्योंकि हम 3 को 5 से, 6 को 2 से अपडेट कर सकते हैं, इसे [8,8,8] बनाने के लिए, तो 7 ऑपरेशन के बाद अधिकतम बारंबारता 3 है।
समाधान दृष्टिकोण
इस समस्या को हल करने के लिए हम निम्न चरणों का पालन करेंगे:
सूची nums को सॉर्ट करें
left := 0, right := 1
जब तक right < nums का आकार, तब तक
k := k - (nums[right] - nums[right-1]) * (right - left)
यदि k < 0, तो
k := k + nums[right] - nums[left]
left := left + 1
right := right + 1
right - left लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
def solve(nums, k):
nums.sort()
left = 0
right = 1
while right < len(nums):
k -= (nums[right] - nums[right-1]) * (right - left)
if k < 0:
k += nums[right] - nums[left]
left += 1
right += 1
return right - left
nums = [8,3,6]
k = 9
print(solve(nums, k))इनपुट
[8,3,6], 9
आउटपुट
3