题解 | #寻找峰值#
寻找峰值
https://www.nowcoder.com/practice/fcf87540c4f347bcb4cf720b5b350c76
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int findPeakElement (int[] nums) { // write code here int left = 0, right = nums.length - 1; // 特殊判断 if(right == 0)return 0; // 只有一个元素时 [2] 返回0 if(right == 1) { // 有两个元素时 [1,2] 返回1,[2,1] 返回0 if(nums[0] > nums[1]) return 0; else return 1; } // 三个元素以上 while(left <= right) { int mid = left + (right - left)/2; // 获取中间点 // 特判,防止 mid+1、mid-1导致数组越界 if(mid == 0 || mid == nums.length - 1) return mid; if(nums[mid] > nums[mid-1] && nums[mid] > nums[mid+1]) return mid; else if(nums[mid] >= nums[mid-1] && nums[mid] < nums[mid+1]) left = mid + 1; // [1,2,3,4],假设此时为2,则需向后寻找 else right = mid -1; // [4,3,2,1],假设此时为2,则需向前寻找 } return -1; } }
算法刷题笔记Java 文章被收录于专栏
刷算法题,记录代码和思路