题解 | #二分查找-II#

二分查找-II

http://www.nowcoder.com/practice/4f470d1d3b734f8aaf2afb014185b395

二分查找,多了判断第一个target的返回下标

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 如果目标值存在返回下标,否则返回 -1
 * @param nums int整型一维数组 
 * @param numsLen int nums数组长度
 * @param target int整型 
 * @return int整型
 */
int search(int* nums, int numsLen, int target ) {
    int left=0,right=numsLen-1;
    int mid;
    while(left<=right){
        mid=left+(right-left)/2;
        if(target>nums[mid]){
            left++;
        }
        else if(target<nums[mid])
        {
            right--;
        }
        else{
            while(nums[mid]==nums[mid-1]){
                mid--;
            }
            return mid;
        }
    }
    return -1;
}
全部评论

相关推荐

10-15 10:57
已编辑
武昌理工学院 FPGA工程师
狠赚笔第一人:老哥学院本没实习还想拿13k学Java狠赚笔呢
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务