একটি তালিকা nums এবং একটি মান k দেওয়া আছে। আকার k-এর প্রতিটি সাবলিস্টের সর্বোচ্চ মান বের করতে হবে।
উদাহরণ: nums = [12, 7, 3, 9, 10, 9], k = 3 হলে আউটপুট [12, 9, 10, 10]।
সমাধানের ধাপসমূহ
- যদি k > len(nums) হয় তবে খালি তালিকা ফেরত দিন
- প্রথম k উপাদানের মধ্যে সর্বোচ্চ বের করুন
- স্লাইডিং উইন্ডো ব্যবহার করে প্রতিটি উইন্ডোর সর্বোচ্চ আপডেট করুন
- পয়েন্টার ট্র্যাক করে O(n) সময়ে সমাধান করুন
উদাহরণ কোড
class Solution:
def solve(self, nums, k):
if k > len(nums):
return []
res = []
temp = nums[0]
point = 0
for i in range(k):
if nums[i] > temp:
temp = nums[i]
point = i
res.append(temp)
for i in range(k, len(nums)):
if nums[i] < temp and (i - point) < k:
temp = nums[point]
elif nums[i] < temp and (i - point) >= k:
point = i - k + 1
for j in range(i - k + 1, i + 1):
if nums[j] > nums[point]:
point = j
temp = nums[point]
else:
temp = nums[i]
point = i
res.append(temp)
return res
ob = Solution()
nums = [12, 7, 3, 9, 10, 9]
k = 3
print(ob.solve(nums, k))
ইনপুট
[12, 7, 3, 9, 10, 9], 3
আউটপুট
[12, 9, 10, 10]