题解 | #二分查找-I#
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
基础算法之二分查找
这个知识点前往不能卡壳,记住二分查找就是要解决奇数偶数的这个问题
(left+right)>>1 右移一位解决
当nums[mid]<target,则说明target在右部,此时mid+1
当nums[mid]>target,则说明target在右部,此时mid-1
当nums[mid]==target,则找到target,return mid
一直循环到left > right 说明该数不在此数组中
class Solution {
public:
int search(vector<int>& nums, int target) {
// write code here
int len = nums.size();
int left = 0,mid = len/2,right = len-1;
while(left <= right){
int mid = (left+right)>>1;//右移1,精妙绝伦!
if(nums[mid]<target){
left = mid+1;
}else if(nums[mid]>target){
right = mid-1;
mid = (left+right)/2;
}else{
return mid;
}
}
return -1;
}
};