ধরুন আমাদের একটি অ্যারে সংখ্যা এবং আরেকটি মান 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