একটি অ্যারে দেওয়া আছে। এমন একটি এলিমেন্ট খুঁজে বের করতে হবে যার বামপাশের সব উপাদান সেটির চেয়ে ছোট এবং ডানপাশের সব উপাদান সেটির চেয়ে বড়। সেটির ইনডেক্স ফেরত দিন। না থাকলে -1।
উদাহরণ
ইনপুট: [6, 2, 5, 4, 7, 9, 11, 8, 10]
আউটপুট: 4 (এলিমেন্ট ৭, ইনডেক্স ৪। বামে: ৬,২,৫,৪ সব ৭-র চেয়ে ছোট। ডানে: ৯,১১,৮,১০ সব ৭-র চেয়ে বড়।)
সমাধানের পদ্ধতি
- `maximum_left[i]` = ০ থেকে i-1 ইনডেক্স পর্যন্ত সর্বোচ্চ মান।
- `minimum_right` = i+1 থেকে শেষ পর্যন্ত ন্যূনতম মান (রাইট থেকে লেফট স্ক্যান করে)।
- প্রতিটি i-তে চেক করুন: `maximum_left[i] < arr[i] < minimum_right`।
- পहলা मैचই উত্তর।
পাইথন কোড
def get_element(arr):
n = len(arr)
maximum_left = [None] * n
maximum_left[0] = float('-inf')
for i in range(1, n):
maximum_left[i] = max(maximum_left[i-1], arr[i-1])
minimum_right = float('inf')
for i in range(n-1, -1, -1):
if maximum_left[i] < arr[i] and minimum_right > arr[i]:
return i
minimum_right = min(minimum_right, arr[i])
return -1
arr = [6, 2, 5, 4, 7, 9, 11, 8, 10]
print(get_element(arr))
ইনপুট
[6, 2, 5, 4, 7, 9, 11, 8, 10]
আউটপুট
4