https://leetcode.cn/problems/peak-index-in-a-mountain-array/description/
虽然是中等题,但实际上就是遍历数组找最大值。
Go
func peakIndexInMountainArray(arr []int) int {
max,index:=0,0
for i:=0;i<len(arr);i++{
if arr[i]>max{
max,index=arr[i],i
}
}
return index
}直到我看到题目要求必须使用O(logn)的算法,那肯定是要二分了。不过太久没写都不知道自己写的算不算二分了。
Go
func peakIndexInMountainArray(arr []int) int {
left,right:=0,len(arr)
mid:=right/2
for left<right{
if arr[mid]>arr[mid-1]&&arr[mid]>arr[mid+1]{
break
}else if arr[mid]<arr[mid+1]{
left=mid
}else if arr[mid-1]>arr[mid]{
right=mid
}
mid=(left+right)/2
}
return mid
}