মান লক্ষ্য করুন আমাদের কাছে একটি সংখ্যার তালিকা nums এবং অন্য একটি মান k আছে। একটি অপারেশন বিবেচনা করুন যেখানে আমরা যেকোনো এলিমেন্টকে ১ বাড়াতে পারি। আমরা সর্বোচ্চ k বার এই অপারেশন করতে পারি। আমাদের কাজ হল যে সংখ্যাটি সবচেয়ে বেশি ফ্রিকোয়েন্সি পাবে সেটির মান বের করা। যদি একাধিক সমাধান থাকে, তবে সবচেয়ে ছোট সংখ্যাটি বেছে নেওয়া হবে।
উদাহরণস্বরূপ, যদি ইনপুট হয় nums = [1, 0, 0, 0, 8, 8, 8, 8] এবং k = 8, তবে আউটপুট হবে 8, কারণ আমরা ১ কে ৭ বার বাড়িয়ে ৮ বানাতে পারি, এবং যেকোনো ০ কে ১ বানাতে পারি। তাহলে তালিকা হয়ে যাবে [8, 1, 0, 0, 8, 8, 8, 8]। সুতরাং ফলাফল ৮।
numsতালিকাটি সর্ট করুন।low := 0,high := 0dist := 0,best := 0ret := -1high < len(nums)হলে লুপ চালান:- যদি
high > 0এবংnums[high] != nums[high-1]হয়, তবে:dist := dist + (high - low) * (nums[high] - nums[high-1])
high := high + 1dist > kহলে লুপ চালান:dist := dist - nums[high-1] - nums[low]low := low + 1
- যদি
high - low > bestহয়, তবে:best := high - lowret := nums[high-1]
retরিটার্ন করুন।
- যদি
class Solution:
def solve(self, nums, k):
nums.sort()
low, high = 0, 0
dist = 0
best = 0
ret = -1
while high < len(nums):
if high > 0 and nums[high] != nums[high - 1]:
dist += (high - low) * (nums[high] - nums[high - 1])
high += 1
while dist > k:
dist -= nums[high - 1] - nums[low]
low += 1
if high - low > best:
best = high - low
ret = nums[high - 1]
return ret
ob = Solution()
nums = [1, 0, 0, 0, 8, 8, 8, 8]
k = 8
print(ob.solve(nums, k))
[1, 0, 0, 0, 8, 8, 8, 8], 8
8