মান লক্ষ্য করুন আমাদের কাছে একটি সংখ্যার তালিকা nums এবং অন্য একটি মান k আছে। এখন একটি অপারেশন বিবেচনা করুন যেখানে আমরা তালিকার যেকোনো এলিমেন্ট থেকে ১ বিয়োগ করতে পারি। আমরা এই অপারেশনটি k বার সম্পাদন করতে পারি। k সংখ্যক এমন অপারেশন করার পর তালিকায় থাকা সর্বনিম্ন সম্ভাব্য সর্বোচ্চ মান খুঁজে বের করতে হবে।
উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [3, 4, 6, 5] এবং k = 6, তবে আউটপুট হবে 3, কারণ আমরা ৪ কে একবার, ৬ কে তিনবার এবং ৫ কে দুবার কমিয়ে [3,3,3,3] পেতে পারি।
- সংখ্যাগুলোকে রিভার্স অর্ডারে সর্ট করুন।
i := 0curr := nums[0]k > 0হলে নিচের লুপ চালান:i < len(nums)এবংnums[i] == currহলেi := i + 1করুন।- যদি
k >= iহয়, তবে:k := k - icurr := curr - 1
- অন্যথায়,
currরিটার্ন করুন।
currরিটার্ন করুন।
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