关注
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;
}
请问一下第一题的二分是这种思路吗
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 上班以后,你还有哪些坚持的爱好? #
5523次浏览 152人参与
# AI coding的好用工具分享 #
13254次浏览 290人参与
# 哪些公司开春招了? #
6681次浏览 100人参与
# 实习怎么做才有更好的产出 #
9026次浏览 184人参与
# 你都在哪些场所面过试? #
14947次浏览 196人参与
# 找工作以来,你最看不惯__ #
8548次浏览 218人参与
# 你最近因为什么迷茫? #
27845次浏览 419人参与
# 实习生工资多少才算正常? #
9842次浏览 178人参与
# 工作压力大怎么缓解 #
135864次浏览 1209人参与
# 非技术2024笔面经 #
458432次浏览 4930人参与
# 实习教会我的事 #
50980次浏览 396人参与
# 职场破防瞬间 #
359010次浏览 2835人参与
# 你给AI提过哪些离谱的需求? #
4587次浏览 144人参与
# 拼多多工作体验 #
44071次浏览 283人参与
# 聊聊你的职场新体验 #
313852次浏览 1848人参与
# 美团开奖 #
385134次浏览 1787人参与
# 如何缓解入职前的焦虑 #
251501次浏览 1441人参与
# 领导做过最不靠谱的事 #
9002次浏览 173人参与
# 秋招投递记录 #
375224次浏览 3195人参与
# 为了实习逃课值吗? #
61774次浏览 517人参与
