parent
877b0a013d
commit
ac7636d030
@ -0,0 +1,39 @@
|
|||||||
|
package leo.class01;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Leo
|
||||||
|
* @ClassName BSAwesome
|
||||||
|
* @DATE 2020/11/12 5:09 下午
|
||||||
|
* @Description 在无序数组中,且无序数组任意相邻的数不相等,找到一个局部最小值.>value<
|
||||||
|
*/
|
||||||
|
public class BSAwesome {
|
||||||
|
|
||||||
|
public static int BSAwesome(int[] arr) {
|
||||||
|
int index = -1;
|
||||||
|
if (arr.length == 0 || arr == null) {
|
||||||
|
return index;
|
||||||
|
}
|
||||||
|
if (arr.length == 1 || arr[0] < arr[1]) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (arr[arr.length - 1] < arr[arr.length - 2]) {
|
||||||
|
return arr.length - 1;
|
||||||
|
}
|
||||||
|
int L = 1;
|
||||||
|
int R = arr.length - 2;
|
||||||
|
int mid = 0;
|
||||||
|
while (L < R) {
|
||||||
|
mid = L + ((R - L) >> 1);
|
||||||
|
if (arr[mid] > arr[mid - 1]) {
|
||||||
|
R = mid - 1;
|
||||||
|
} else if (arr[mid] > arr[mid + 1]) {
|
||||||
|
L = mid + 1;
|
||||||
|
} else {
|
||||||
|
return mid;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return L;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue