NC105:二分查找-II

二分查找-II

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

res=-1,首先找到中间的数

  1. nums[mid]==target说明右边都是>=target的数、更新res,right=mid-1
  2. nums[mid]>target说明右边都是>target的数,right=mid-1
  3. nums[mid]<target说明左边都是<target的数,left=mid+1;
    public int search (int[] nums, int target) {
         // write code here
         if(nums.length==0){
             return -1;
         }
         int res=-1;
         int left=0,right=nums.length-1;
         if(nums[left]>target || nums[right]<target ){
             return -1;
         }
         while(left<=right){
             int mid=(right-left)/2+left;
             if(nums[mid]==target){
                 res=mid;
                 right=mid-1;
             }
             else if(nums[mid]>target){
                 right=mid-1;
             }
             else{
                 left=mid+1;
             }
         }
         return res;
     }
名企高频面试算法题解 文章被收录于专栏

牛客题霸 - 程序员面试高频题 - 题解

全部评论

相关推荐

02-08 20:56
已编辑
南京工业大学 Java
在等offer的比尔很洒脱:我也是在实习,项目先不说,感觉有点点小熟悉,但是我有点疑问,这第一个实习,公司真的让实习生去部署搭建和引入mq之类的吗,是不是有点过于信任了,我实习过的两个公司都是人家正式早搭好了,根本摸不到部署搭建的
点赞 评论 收藏
分享
CVTE校招内推:可以试试我们这,硬件还没招满
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务