关注
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;
}
请问一下第一题的二分是这种思路吗
查看原帖
点赞 评论
相关推荐
牛客热帖
更多
正在热议
更多
# 学历VS实习,哪个更重要? #
3946次浏览 83人参与
# AI替代不了什么? #
791次浏览 27人参与
# 厦门银行科技岗值不值得投 #
16321次浏览 361人参与
# 烂工作和没工作哪个更痛苦? #
626次浏览 20人参与
# uu们,春招你还来吗? #
67346次浏览 878人参与
# 面试中,你被问过哪些奇葩问题? #
98522次浏览 1387人参与
# 春招至今,你收到几个面试了? #
3039次浏览 18人参与
# 一人分享一道面试手撕题 #
112197次浏览 2683人参与
# 工作上你捅过哪些篓子? #
68769次浏览 321人参与
# 发工资后,你做的第一件事是什么 #
99921次浏览 320人参与
# 面试紧张时你会有什么表现? #
35153次浏览 232人参与
# 关于春招你都做了哪些准备? #
145547次浏览 768人参与
# 牛油的搬砖plog #
188803次浏览 1256人参与
# 90后北漂现状 #
36253次浏览 214人参与
# 面试被问到不会的问题,你怎么应对? #
28775次浏览 758人参与
# 你的实习什么时候入职 #
367669次浏览 2365人参与
# 网申一定要掌握的小技巧 #
20676次浏览 87人参与
# 你都用vibe coding做过什么? #
25178次浏览 957人参与
# 牛友的志愿填报指南 #
63492次浏览 491人参与
# 哔哩哔哩笔试 #
35424次浏览 143人参与
# 分享一个让你热爱工作的瞬间 #
67486次浏览 500人参与
