题解 | #二分查找-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;
    }
};
全部评论

相关推荐

09-23 15:16
门头沟学院 Java
点赞 评论 收藏
分享
AC鸽想进大厂:你是我见过最美的牛客女孩
点赞 评论 收藏
分享
09-24 17:00
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务