কম্পিউটার টিউটোরিয়াল

পাইথনে অ্যারে-তে বামে ছোট ও ডানে বড় উপাদান সম্বলিত এলিমেন্ট খুঁজে বের করা

একটি অ্যারে দেওয়া আছে। এমন একটি এলিমেন্ট খুঁজে বের করতে হবে যার বামপাশের সব উপাদান সেটির চেয়ে ছোট এবং ডানপাশের সব উপাদান সেটির চেয়ে বড়। সেটির ইনডেক্স ফেরত দিন। না থাকলে -1।

উদাহরণ

ইনপুট: [6, 2, 5, 4, 7, 9, 11, 8, 10]

আউটপুট: 4 (এলিমেন্ট ৭, ইনডেক্স ৪। বামে: ৬,২,৫,৪ সব ৭-র চেয়ে ছোট। ডানে: ৯,১১,৮,১০ সব ৭-র চেয়ে বড়।)

সমাধানের পদ্ধতি

  1. `maximum_left[i]` = ০ থেকে i-1 ইনডেক্স পর্যন্ত সর্বোচ্চ মান।
  2. `minimum_right` = i+1 থেকে শেষ পর্যন্ত ন্যূনতম মান (রাইট থেকে লেফট স্ক্যান করে)।
  3. প্রতিটি i-তে চেক করুন: `maximum_left[i] < arr[i] < minimum_right`।
  4. পहলা मैचই উত্তর।

পাইথন কোড


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
  1. পাইথনে একটি লিস্ট থেকে K-র চেয়ে বড় সবচেয়ে ছোট উপাদান বের করুন

  2. পাইথনে K-র চেয়ে বড় প্রথম এলিমেন্টের ইন্ডেক্স বের করা

  3. পাইথনে চেক করা: লিস্টের সব মান কি একটি দिये गये ভ্যালুর চেয়ে বড়?

  4. পাইথন প্রোগ্রাম: লিস্টের সব মান দেওয়া মান থেকে বড় কিনা চেক করা