题解 | #二分查找-II#

二分查找-II

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

class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 如果目标值存在返回下标,否则返回 -1 * @param nums int整型vector * @param target int整型 * @return int整型 */ int search(vector& nums, int target) { // write code here //首先这已经是个有序的数组了即升序排列好了,但是数组中有重复数字,也就是说当你找到目标值 //target但是可能他并不是第一个出现的target,此时应该继续二分并时刻更新下标最小的target出现的下标 int low=0,high=nums.size(),position=-1;//position为记录target的标记位 if(high==0) return position;//即为最后一种特殊情况即数组中一个元素都没有 while(high>=low) { int mid=(high+low)/2;//找出中点位置 if(nums[mid]==target)//若找到先用position记录下来,然后继续缩小查找范围 { position=mid; high=mid-1; } else if(nums[mid]<target)//因为是升序,所以target一定在后半部分里 { low=mid+1; } else{//此时一定在前半部分里 high=mid-1; } } //当while循环结束时,此时的position一定就为target第一次出现的下标 return position; } }; //另外本人真的是个战五渣,就连vector是个啥都是现场百度的,太菜了,所以写的不好轻点喷~

全部评论

相关推荐

11-24 00:11
已编辑
广东工业大学 算法工程师
避雷深圳&nbsp;&nbsp;yidao,试用期&nbsp;6&nbsp;个月。好嘛,试用期还没结束,就直接告诉你尽快找下一家吧,我谢谢您嘞
牛客75408465号:笑死,直属领导和 hr 口径都没统一,各自说了一些离谱的被裁理由,你们能不能认真一点呀,哈哈哈哈哈😅😅😅
点赞 评论 收藏
分享
11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
牛客410815733号:这是什么电影查看图片
点赞 评论 收藏
分享
11-28 17:58
门头沟学院 Java
美团 JAVA开发 n×15.5
牛客786276759号:百度现在晋升很难的 而且云这块的业务没美团好 你看百度股价都跌成啥样了
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务