无重复元素有序数组中查找是否有指定数据
public boolean find(int[] nums, int target){
int l = 0;
int r = nums.length;
while(l <= r){
int mid = (l + r) >> 1;
if (mid > target){
r = mid - 1;
}else if (mid < target){
l = mid + 1;
}else {
return true;
}
}
return false;
}
有重复元素有序数组中查找是否有指定数据,如果有,返回最指定元素最后一个下标,如果没有,返回不大于目标值的最后一个元素下标, 如果没有不大于目标值的元素,返回-1。
public int find(int[] nums, int target){
int res = -1;
int l = 0;
int r = nums.length;
while (l <= r) {
int mid = (l + r) >> 1;
if (mid > target){
r = mid - 1;
}else {
l = mid + 1;
res = mid;
}
}
return res;
}
有重复元素有序数组中查找是否有指定数据,如果有,返回最指定元素第一个下标,如果没有,返回不小于目标值的第一个元素下标, 如果没有不小于目标值的元素,返回-1。
public int find(int[] nums, int target){
int res = -1;
int l = 0;
int r = nums.length;
while (l <= r) {
int mid = (l + r) >> 1;
if (mid >= target){
r = mid - 1;
res = mid;
}else {
l = mid + 1;
}
}
return res;
}