class Main {
public static int find(int[] arr, int num) {
if(arr == null || arr.length == 0) {
return -1;
}
int L = 0;
int R = arr.length - 1;
while(L <= R) {
int mid = (L + R) / 2;
if(arr[mid] == num) {
return mid;
} else if(arr[mid] < num) {
L = mid + 1;
} else {
R = mid - 1;
}
}
return -1;
}
public static int mostLeftNoLessNumIndex(int[] arr, int num) {
if(arr == null || arr.length == 0) {
return -1;
}
int L = 0;
int R = arr.length - 1;
int ans = -1;
while(L <= R) {
int mid = (L + R) / 2;
if(arr[mid] >= num) {
ans = mid;
R = mid - 1;
} else {
L = mid + 1;
}
}
return ans;
}
public static int mostRightNoLessNumIndex(int[] arr, int num) {
if(arr == null || arr.length == 0) {
return -1;
}
int L = 0;
int R = arr.length - 1;
int ans = -1;
while(L <= R) {
int mid = (L + R) / 2;
if(arr[mid] > num) {
R = mid - 1;
} else {
ans = mid;
L = mid + 1;
}
}
return ans;
}
public static void main(String[] args) {
int[] arr = {1,2,2,4,5,7,7,8,9,10};
int index = find(arr, 8);
System.out.print(index);
}
}