package leetcode;
//nums[mid+1]>nums[mid],那么mid+2只有两种可能,一个是大于mid+1,一个是小于mid+1,小于mid+1的情况,那么mid+1就是峰值,
//大于mid+1的情况,继续向右推,如果一直到数组的末尾都是大于的,那么可以肯定最后一个元素是峰值,因为nums[nums.length]=负无穷
//num[mid+1]<nums[mid]同理
public class demo_162 {
public int findPeakElement(int[] nums) {
int left=0;
int right=nums.length-1;
int mid=0;
while(left<=right) {
mid=(left+right)/2;
//nums[mid+1]>nums[mid]情况
if((mid+1)<nums.length&&nums[mid]<nums[mid+1]) {
if((mid+2)==nums.length||nums[mid+2]<nums[mid+1]) {
return (mid+1);
}
else {
left=mid+1;
}
}
//nums[mid+1]<nums[mid]情况
else {
if((mid-1)>-1&&nums[mid]>nums[mid-1]) {
return mid;
}
else {
right=mid-1;
}
}
}
return mid;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_162 d162=new demo_162();
int[] nums= {1,2};
System.out.println(d162.findPeakElement(nums));
}
}