สมมติว่าเรามีอาร์เรย์ เราต้องหาองค์ประกอบก่อนที่องค์ประกอบทั้งหมดจะน้อยกว่า และหลังจากนั้นทั้งหมดมีค่ามากกว่านั้น สุดท้าย ให้คืนค่าดัชนีขององค์ประกอบ หากไม่มีองค์ประกอบดังกล่าว ให้คืนค่า -1
ดังนั้น หากอินพุตเป็น A - [6, 2, 5, 4, 7, 9, 11, 8, 10] เอาต์พุตจะเป็น 4
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
n :=ขนาดของ arr
-
maximum_left :=อาร์เรย์ขนาด n
-
maximum_left[0] :=-อินฟินิตี้
-
สำหรับผมอยู่ในช่วง 1 ถึง n ทำ
-
maximum_left[i] :=maximum of maximum_left[i-1], arr[i-1]
-
-
maximum_right :=อินฟินิตี้
-
สำหรับฉันอยู่ในช่วง n-1 ถึง -1 ลดลง 1 ทำ
-
ถ้า maximum_left[i]
arr[i] แล้ว -
กลับมา
-
-
maximum_right :=ขั้นต่ำของ maximum_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