查找元素,数组是有序的。很容易想到二分法。时间复杂度O(logn)。
需要一直二分到底最后一个元素。Java代码如下
public static int findLeftOne(int[] arr,int num){
int begin = 0;
int end = arr.length-1;
int mid = (begin+end)/2;
int target = -1;
while (begin<mid){
if (arr[mid] >= num){
target = arr[mid];
end = mid;
}
if (arr[mid] < num){
begin=mid;
}
mid = (begin+end)/2;
}
return target;
}