largest smaller or equal value

explanation

如果给 1 2 4 4 找4, return 3
binary search 如果target 在range里, start <= target, end > target

code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private int (int[] arr, int target) {
if (arr == null || arr.length == 0) {
return -1;
}
int start = 0, end = arr.length - 1;
while (start + 1 < end) {
int mid = start + (end - start) / 2;
if (arr[mid] <= target) {
start = mid;
} else {
end = mid;
}
}

if (arr[end] <= target) {
return end;
} else if (arr[start] <= target) {
return start;
}
return -1;

}