题解 | #二分查找-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) {
        // 如果数组内没有元素,直接返回-1
        if(nums.size()==0){
            return -1;
        }
	  //规定左边界和右边界
        int r=nums.size(),l=0;
        
	//写循环,当左右边界重合的时候就是找到答案的时候
        while(r>=l){
		  //查找中间位置
            int mid = (r+l)/2;
		  //用中间位置和目标值比较,以此实现二分
            if(target>nums[mid]){
			  //如果目标值比中间位置大,左边界收缩
                l+=1;
                
            }
            else if(target<nums[mid]){
			  //以此类推
                r-=1;
            }
		//如果刚好相等,那么找到答案了,mid就是目标值的位置
            else{
                return mid;
            }
        }
        return -1;
    }
};

全部评论

相关推荐

投递帆软软件等公司10个岗位
点赞 评论 收藏
分享
09-12 19:04
门头沟学院 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务