একটি অ্যারে এবং দৈর্ঘ্য k দেওয়া থাকলে, দৈর্ঘ্য k এর সবচেয়ে বড় সাবঅ্যারে খুঁজে বের করতে হবে। সাবঅ্যারে তুলনার নিয়ম: প্রথম ভিন্ন ইনডেক্সে যে সাবঅ্যারের মান বড়, সেটিই বড়।
উদাহরণ:
ইনপুট: nums = [5, 3, 7, 9], k = 2
আউটপুট: [7, 9] কারণ দৈর্ঘ্য ২ এর সাবঅ্যারেগুলো: [5,3], [3,7], [7,9]। এখানে [7,9] সবচেয়ে বড়।
সমাধানের পদ্ধতি:
start = len(nums) - k(সাবঅ্যারের শেষ সম্ভাব্য শুরুতে ইনডেক্স)max_element = nums[start],max_index = startwhile start >= 0লুপ চালান:- যদি
nums[start] > max_element: আপডেট করুন start -= 1
- যদি
- রিটার্ন
nums[max_index : max_index + k]
পাইথন কোড:
def solve(nums, k):
start = len(nums) - k
max_element = nums[start]
max_index = start
while start >= 0:
if nums[start] > max_element:
max_element = nums[start]
max_index = start
start -= 1
return nums[max_index : max_index + k]
print(solve([5, 3, 7, 9], 2)) # আউটপুট: [7, 9]
টেস্ট কেস:
ইনপুট: [5, 3, 7, 9], 2
আউটপুট: [7, 9]
নোট:
এই অ্যালগরিদম O(n) টাইম কমপ্লেক্সিটিতে কাজ করে। এটি সাবঅ্যারের প্রথম উপাদানের ভিত্তিতে তুলনা করে, যা লেক্সিকোগ্রাফিক্যাল অর্ডার নিশ্চিত করে।