C++ binary_serarch()
class Solution {
public:
int search(vector<int>& nums, int target) {
int size = nums.size();
if(binary_search(nums.begin(),nums.end(),target) == 0) return -1;
return lower_bound(nums.begin(),nums.end(),target)-nums.begin();
}
};
C++ 手写二分
class Solution {
public:
int search(vector<int>& nums, int target) {
int size = nums.size();
int l = 0, r = size-1;
while(l <= r){
int mid = (l+r)/2;
if(nums[mid] == target) return mid;
if(nums[mid] > target)
r = mid-1;
else
l = mid+1;
}
return -1;
}
};
JAVA 手撕
class Solution {
public int search(int[] nums, int target) {
int len = nums.length;
int l = 0, r = len-1;
while(l <= r){
int mid = (l+r)/2;
if(nums[mid] == target) return mid;
if(target > nums[mid])
l = mid + 1;
else
r = mid-1;
}
return -1;
}
}