मान लीजिए कि हमारे पास एक सरणी संख्या और दूसरा मान k है। एक ऑपरेशन में, हम अंकों के एक इंडेक्स का चयन कर सकते हैं और उस इंडेक्स पर तत्व को 1 से बढ़ा सकते हैं। हमें अधिकतम k संख्या में ऑपरेशन करने के बाद किसी तत्व की अधिकतम संभव आवृत्ति का पता लगाना होगा।
इसलिए, यदि इनपुट nums =[8,3,6], k =9 की तरह है, तो आउटपुट 3 होगा क्योंकि हम इसे [8,8,8] बनाने के लिए 3 को 5 से, 6 को 2 से अपडेट कर सकते हैं। 7 ऑपरेशनों के बाद हमारे पास अधिकतम आवृत्ति 3 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सूची संख्या क्रमित करें
-
बाएँ:=0, दाएँ:=1
-
जबकि सही <अंकों का आकार, करें
-
k :=k -(अंक [दाएं] - अंक [दाएं -1]) * (दाएं - बाएं)
-
अगर के <0, तो
-
k :=k + अंक [दाएं] - अंक [बाएं]
-
बाएँ :=बाएँ + 1
-
-
दाएँ :=दाएँ + 1
-
-
दाएँ-बाएँ लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
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