ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যার নাম nums এবং আরেকটি মান k। এখন আমাদের একটি অপারেশন বিবেচনা করা যাক যেখানে আমরা তালিকার যেকোনো উপাদান থেকে 1 বিয়োগ করতে পারি। আমরা এই অপারেশন k বার সঞ্চালন করতে পারেন. k-এর এই ধরনের ক্রিয়াকলাপগুলির পরে আমাদের তালিকায় সর্বনিম্ন সম্ভাব্য সর্বাধিক মান খুঁজে বের করতে হবে।
সুতরাং, ইনপুট যদি nums =[3, 4, 6, 5] k =6 এর মত হয়, তাহলে আউটপুট হবে 3, যেমন আমরা 4 বার কমাতে পারি, 6 তিনবার এবং 5 বার করতে পারি [3,3,3, 3]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- বিপরীত ক্রমে সংখ্যা সাজান
- i :=0
- curr :=সংখ্যা[0]
- যখন k> 0, do
- যখন i <সংখ্যা এবং সংখ্যার আকার [i] curr এর মতো, do
- i :=i + 1
- যদি k>=i, তারপর
- k :=k - i
- curr :=curr - 1
- অন্যথায়,
- রিটার্ন কর
- যখন i <সংখ্যা এবং সংখ্যার আকার [i] curr এর মতো, do
- রিটার্ন কর
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class Solution: def solve(self, nums, k): nums.sort(reverse=True) i = 0 curr = nums[0] while k > 0: while i < len(nums) and nums[i] == curr: i += 1 if k >= i: k -= i curr -= 1 else: return curr return curr ob = Solution() nums = [3, 4, 6, 5] k = 6 print(ob.solve(nums, k))
ইনপুট
[3, 4, 6, 5], 6
আউটপুট
3