162.寻找峰值
解题思路:
- 选择数组的中间元素nums[mid]。
- 如果nums[mid]大于其左侧元素nums[mid - 1]和右侧元素nums[mid + 1](如果存在),则nums[mid]就是一个峰值元素。
- 如果nums[mid]小于nums[mid + 1],说明峰值一定存在右侧,因为元素从mid往mid+1处上升。
- 如果nums[mid]小于nums[mid - 1],说明峰值一定存在左侧。
func findPeakElement(nums []int) int {
n := len(nums)
left, right := 0, n-1
for left < right {
mid := left + (right-left)/2
if nums[mid] > nums[mid+1] {
right = mid
}else {
left = mid+1
}
}
return left
}