在无序数组中,且无序数组任意相邻的数不相等,找到一个局部最小值的位置

pull/3/head
Leo 5 years ago
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…
Cancel
Save