मान लीजिए हमारे पास एक ऐरे है, हमें एक ऐसा तत्व ढूंढना है जिसके पहले सभी तत्व उससे कम हों, और जिसके बाद सभी तत्व उससे बड़े हों। अंत में, तत्व का इंडेक्स लौटाएं, यदि ऐसा कोई तत्व नहीं है, तो -1 लौटाएं।
तो, यदि इनपुट A = [6, 2, 5, 4, 7, 9, 11, 8, 10] जैसा है, तो आउटपुट 4 होगा।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
n := arr का आकार
maximum_left := आकार n का एक ऐरे
maximum_left[0] := -infinity
i को 1 से n तक के लिए, करें:
maximum_left[i] := maximum_left[i-1] और arr[i-1] का अधिकतम
minimum_right := infinity
i को n-1 से -1 तक, 1 से घटाकर, करें:
यदि maximum_left[i] < arr[i] और minimum_right > arr[i], तो:
i लौटाएं
minimum_right := minimum_right और arr[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