const biPart=(target,arr)=>{ let low=0,high=arr.length-1; let count=0; //找不到的情况下: 最后low与high相等时low总比high大1 //为什么这里不能用low<high? 因为low<high的话无法判断最后low/high的位置 //比如 1 2 4 6 6 7 找5最后low=3是一个比5大的数,找3最后low=2是一个比3小的数 //但是如果low<=high, 最后的low都是比要找的那个数大的,相当于low表示arr中比target大的数的个数!!! while (low<=high){ let mid=Math.floor((low+high)/2); if (arr[mid]>target){ high=mid-1; }else if (arr[mid]<target){ low=mid+1; }else { //找得到的情况: 这里存在重复数字,重复时最后low=high就没有上面的考虑 low=mid; //最后用low返回 //mid>0的情况下,找到第一个target的位置 while (mid&&arr[--mid]===target){ low--; } break; } } //low代表arr中小于target的数字的个数 //arr.length-low则表示arr中大于等于target数字的个数 return arr.length-low; } 请问一下第一题的二分是这种思路吗
点赞 评论

相关推荐

07-07 11:33
江南大学 Java
已经在暑假实习了&nbsp;,没有明确说有hc,纠结实习到八月份会不会有点影响秋招毕竟感觉今年好多提前批
程序员小白条:92的话准备提前批,其他没必要,没面试机会的,而且你要准备充分,尤其八股和算法题
点赞 评论 收藏
分享
合不合适,我自己说了才算
码农索隆:hr:“真执着啊,来我公司当法人吧”
点赞 评论 收藏
分享
机械打工仔:我来告诉你原因,是因为sobb有在线简历,有些HR为了快会直接先看在线简历,初步感觉不合适就不会找你要详细的了
投了多少份简历才上岸
点赞 评论 收藏
分享
码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务