题解 | 寻找峰值
寻找峰值
https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ // 题目中的时间复杂度要求只能采用二分查找 // public int binarySearch(int left,int right,int[] nums){ int mid = (left+right)/2; if (left==right){ return mid; } if(nums[mid]>nums[mid+1]){ right = mid; return binarySearch(left,mid,nums); }else{ left = mid +1; return binarySearch(mid +1,right,nums); } } public int findPeakElement (int[] nums) { int left = 0; int right = nums.length-1; return binarySearch(left,right,nums); } }
寻找峰值这道题目后面复习的时候和旋转数组一起看
这道题目似乎降低难度了,没让找到所有的峰值。
第一步要去估计峰值可能在的区间 如果mid的值>mid+1的值,则峰值在左边的可能性大 如果mid 的值<mid+1 的值峰值 则峰值在右边的可能性大