题目

image.png

思路

  • 前提条件是nums[<0] = 负无穷,nums[>= nums.length] = 正无穷
  • 规律一:如果nums[i] > nums[i+1],则在i之前一定存在峰值元素
  • 规律二:如果nums[i] < nums[i+1],则在i+1之后一定存在峰值元素

    代码

    1. public int findPeakElement(int[] nums) {
    2. int i = 0, j = nums.length - 1, mid = 0;
    3. while (i < j) {
    4. mid = (i + j) / 2;
    5. if (nums[mid] > nums[mid + 1]) {
    6. j = mid;
    7. } else {
    8. i = mid + 1;
    9. }
    10. }
    11. return i;
    12. }
    寻找峰值