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