ধরুন আমাদের একটি অ্যারে আছে, আমাদেরকে এমন একটি উপাদান খুঁজে বের করতে হবে যার আগে সমস্ত উপাদান এটির থেকে কম এবং যার পরে সবগুলি এর থেকে বড়৷ অবশেষে, উপাদানটির সূচী ফেরত দিন, যদি এমন কোন উপাদান না থাকে, তাহলে -1 ফেরত দিন।
সুতরাং, যদি ইনপুটটি A - [6, 2, 5, 4, 7, 9, 11, 8, 10] এর মত হয়, তাহলে আউটপুট হবে 4।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
n :=arr এর আকার
-
সর্বাধিক_বাম :=আকারের একটি অ্যারে n
-
সর্বাধিক_বাম[0] :=-অসীম
-
1 থেকে n রেঞ্জের জন্য, করুন
-
সর্বাধিক_বাম[i] :=সর্বাধিক_বাম[i-1], arr[i-1]
-
-
minimum_right :=infinity
-
n-1 থেকে -1 রেঞ্জে i এর জন্য, 1 দ্বারা হ্রাস করুন, করুন
-
যদি সর্বাধিক_বাম[i]
arr[i], তাহলে -
ফেরত i
-
-
ন্যূনতম_অধিকার :=সর্বনিম্ন_অধিকার
-
রিটার্ন -1
-
-
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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