一个死记硬背的方法
起始区间是[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就行
本文介绍了一种高效的方法来确定给定数组中山峰元素的位置,通过二分查找技巧,避免了使用中间变量,直接返回left或right。这种方法适用于数组的动态查找,提高了代码简洁性和效率。

559

被折叠的 条评论
为什么被折叠?



