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; } }