public class 二分但数组无序 {
//1.数组无序
//2.数组相邻的元素不相同
//3.建议利用单调性
//4.求峰值(arr[n-1]<arr[n]>arr[n+1]),只返回一个峰值
public static int findBeakElement (int arr []) {
int n = arr.length ;
if (arr.length<2||arr==null) {
return 0 ;
}
if (arr[0]>arr[1]) {
return 0 ;
}
if (arr[n-1]>arr[n-2]) {
return n-1 ;
}
int left = 0 ,right = n-1,middle = 0,answer= -1 ;
while (left<=right) {
middle = (left + right)>>>1;
if (arr[middle]<arr[middle+1]) {
left = middle+1;
}else if (arr[middle]<arr[middle-1]) {
right = middle-1;
}else {
answer= middle ;
break ;
}
}
return answer ;
}}
二分但数组无序
最新推荐文章于 2024-09-14 18:46:05 发布