মনে করুন nums নামে একটি অ্যারে এবং k নামে আরেকটি মান আছে। একটি অপারেশনে, আমরা nums-এর একটি ইন্ডেক্স সিলেক্ট করি এবং সেই ইন্ডেক্সের এলিমেন্ট ১ বাড়াই। আমাদের hoogোত k সংখ্যক অপারেশন করার পর একটি এলিমেন্টের সর্বোচ্চ সম্ভাব্য ফ্রিকোয়েন্সি বের করতে হবে।
সুতরাং, যদি ইনপুট হয় nums = [8,3,6], k = 9, তবে আউটপুট হবে 3 কারণ আমরা 3 কে ৫ দিয়ে আপডেট করি, 6 কে ২ দিয়ে, যাতে এটি [8,8,8] হয়, সুতরাং ৭ অপারেশনের পর সর্বোচ্চ ফ্রিকোয়েন্সি ৩।
এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব −
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