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