题解 | #二分查找-I#

二分查找-I

https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b

class Solution {
public:
    /**
     * 二分查找
     * @param nums int整型vector 数组
     * @param x int整型 目标值
     * @return int整型 目标值在数组中的下标,若不存在则返回-1
     */
    int search(vector<int>& nums, int x) 
    {
        int l=-1,r=nums.size();
        // 在[l+1, r)区间内查找目标值
        while(l+1<r)
        {
            int mid=(l+r)/2; // 计算中位数
            if(nums[mid]<x)
                l=mid; // 目标值在右边,缩小区间为[mid, r)
            else
                r=mid; // 目标值在左边,缩小区间为[l+1, mid)
        }
        if(r<nums.size()&&nums[r]==x)  
            return r; // 找到目标值,返回下标
        else
            return -1; // 没有找到目标值,返回-1
    }
};

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-12 10:05
小米集团 算法工程师 28.0k*15.0
泡沫灬一触即破:楼上那个看来是看人拿高薪,自己又不如意搁这泄愤呢是吧,看你过往评论很难不怀疑你的精神状态
点赞 评论 收藏
分享
新记话事人:你就和她说去抖音了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务