162.寻找峰值

解题思路:

  1. 选择数组的中间元素nums[mid]。
  2. 如果nums[mid]大于其左侧元素nums[mid - 1]和右侧元素nums[mid + 1](如果存在),则nums[mid]就是一个峰值元素。
  3. 如果nums[mid]小于nums[mid + 1],说明峰值一定存在右侧,因为元素从mid往mid+1处上升。
  4. 如果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
}