ধরুন আমাদের একটি অ্যারে সংখ্যা এবং আরেকটি মান k আছে। একটি ক্রিয়াকলাপে, আমরা সংখ্যাগুলির একটি সূচক নির্বাচন করতে পারি এবং সেই সূচকে উপাদানটিকে 1 দ্বারা বাড়াতে পারি। সর্বাধিক k সংখ্যক ক্রিয়াকলাপ সম্পাদন করার পরে আমাদের একটি উপাদানের সর্বাধিক সম্ভাব্য ফ্রিকোয়েন্সি খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট nums =[8,3,6], k =9 এর মত হয়, তাহলে আউটপুট 3 হবে কারণ আমরা 3 বাই 5, 6 বাই 2, এটিকে [8,8,8] করতে আপডেট করতে পারি। ৭টি অপারেশনের পর আমাদের সর্বোচ্চ ফ্রিকোয়েন্সি ৩।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
তালিকার সংখ্যাগুলি সাজান
-
বাম :=0, ডানে :=1
-
ডানে <সংখ্যার আকার, করুন
-
k :=k -(সংখ্যা[ডান] - সংখ্যা [ডান-১]) *(ডান - বাম)
-
যদি k <0, তাহলে
-
k :=k + সংখ্যা[ডান] - সংখ্যা[বাম]
-
left :=left + 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