一个死记硬背的方法
起始区间是[0,n-1]就用<=,起始区间[0,n]就用<
也就是
left=0,right=length-1的时候,while使用<=,
left=0,right=length的时候,while使用<。
public int peakIndexInMountainArray(int[] arr) {
int left=0;
int right=arr.length-1;
int mid=0;
int ans=0;
if(arr[0]>arr[1]){
return 0;
}
while(left<=right){
mid=left+(right-left)/2;
if(arr[mid]>arr[mid+1]){
ans=mid;
right=mid-1;
}else if(arr[mid]<arr[mid+1]){
left=mid+1;
}
}
return left;
}
两种方法都不需要使用中间变量,直接return left或者right就行