符合下列屬性的數組 arr 稱為 山脈數組 :
arr.length >= 3
存在 i(0 < i < arr.length - 1)使得:
arr[0] < arr[1] < … arr[i-1] < arr[i]
arr[i] > arr[i+1] > … > arr[arr.length - 1]
給你由整數組成的山脈數組 arr ,返回任何滿足 arr[0] < arr[1] < … arr[i - 1] < arr[i] > arr[i + 1] > … > arr[arr.length - 1] 的下標 i 。
示例 1:
輸入:arr = [0,1,0]
輸出:1
示例 2:
輸入:arr = [0,2,1,0]
輸出:1
用二分查找的話,時間復雜度是Log(n)。思路是
class Solution:
def peakIndexInMountainArray(self, arr: List[int]) -> int:
left,right = 0,len(arr)-1
result = 0
while left<=right:
mid = (left+right)//2
if arr[mid]>arr[mid+1]:
result = mid
right = mid-1
else:
left = mid+1
return result