diff --git a/data_structures/arrays/peak_mountain_array.py b/data_structures/arrays/peak_mountain_array.py new file mode 100644 index 000000000000..aef067dc043d --- /dev/null +++ b/data_structures/arrays/peak_mountain_array.py @@ -0,0 +1,25 @@ +""" +peak_mountain_array.py +Author: Taha Zulfiquar +Description: Finds the peak index in a mountain array using binary search. +""" + +from typing import List + + +def peak_mountain(arr: List[int]) -> int: + start, end = 0, len(arr) - 1 + + while start < end: + mid = start + (end - start) // 2 + if arr[mid] > arr[mid + 1]: + end = mid + else: + start = mid + 1 + return start + + +if __name__ == "__main__": + arr = [1, 2, 3, 5, 7, 8, 6, 3, 2] + peak_index = peak_mountain(arr) + print(f"The peak index is: {peak_index}")