ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যার নাম nums এবং আরেকটি মান k। আসুন একটি অপারেশন বিবেচনা করি যেখানে আমরা একটি করে কিছু উপাদান বৃদ্ধি করি। আমরা সর্বাধিক k বার পারফর্ম করতে পারি, আমাদের সবচেয়ে ঘনঘন সংখ্যার মান খুঁজে বের করতে হবে যা আমরা পেতে পারি। যদি একাধিক সমাধান থাকে, তাহলে সম্ভাব্য ক্ষুদ্রতম সংখ্যা নির্বাচন করুন।
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[1, 0, 0, 0, 8, 8, 8, 8] k =8, তাহলে আউটপুট হবে 8, যেমন আমরা 8 পেতে 1, 7 গুণ বাড়াতে পারি, এবং যেকোনো 0 থেকে 1 বাড়ান, তাই, আমরা [8, 1, 0, 0, 8, 8, 8, 8] পাব। সুতরাং ফলাফল 8.
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:
- তালিকা সংখ্যা সাজান
- নিম্ন :=0, উচ্চ :=0
- dist :=0, সেরা :=0
- ret :=-1
- যখন উচ্চ <সংখ্যার আকার, কর
- যদি high> 0 এবং nums[high] nums[high - 1] এর মত না হয়, তাহলে
- dist :=dist +(high - low) *(nums[high] - nums[high - 1])
- উচ্চ :=উচ্চ + 1
- যদিও dist> k, do
- dist :=dist - nums[high - 1] - nums[low]
- low :=low + 1
- যদি উচ্চ - নিম্ন> সর্বোত্তম, তাহলে
- সর্বোত্তম :=উচ্চ - নিম্ন
- ret :=সংখ্যা[উচ্চ - 1]
- রিটার্ন রিটার্ন
- যদি high> 0 এবং nums[high] nums[high - 1] এর মত না হয়, তাহলে
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ কোড
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