题解 | #二分查找-I#

二分查找-I

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

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型vector 
     * @param target int整型 
     * @return int整型
     */
    int search(vector<int>& nums, int target) {
        // write code here
	  	//学习笔记之二分法
        //下标为0到N-1,区间范围采用左闭又闭
        int left = 0;
        int right = nums.size()-1;
        while(left <= right)
        {
            //优化中间值取法
            //int middle = (left + right) /2 ;
            //int middle = left + (right - left) / 2;
            int middle = left + ((right - left) >>1);
            if(target > nums[middle])
                left = left + 1; //在右半边,更新左侧区间
            else if(target < nums[middle])
                right = right - 1; //在左半边,更新右侧区间
            else
                return middle;
        }
        return -1;  //没找到返回-1

    }
};

全部评论

相关推荐

11-27 14:21
同济大学 Java
卢来猴祖:给了这薪资关键拿不了几个月就给你踹了呀
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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