关注
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;
}
请问一下第一题的二分是这种思路吗
查看原帖
点赞 评论
相关推荐
投递阿里国际数字商业集团等公司10个岗位 >
点赞 评论 收藏
分享
牛客热帖
正在热议
# 拼多多求职进展汇总 #
233472次浏览 2032人参与
# 在职场上,你最讨厌什么样的同事 #
5751次浏览 81人参与
# 阿里云管培生offer #
59113次浏览 1748人参与
# 25届秋招总结 #
397068次浏览 3978人参与
# 哪些公司校招卡第一学历 #
32859次浏览 105人参与
# 地方国企笔面经互助 #
6561次浏览 16人参与
# 北方华创开奖 #
66034次浏览 549人参与
# ai智能作图 #
21559次浏览 262人参与
# 硬件兄弟们 甩出你的华为奖状 #
77965次浏览 625人参与
# 实习,投递多份简历没人回复怎么办 #
2436114次浏览 34704人参与
# 工作中,你有没有遇到非常爱骂人的领导? #
4738次浏览 47人参与
# 实习与准备秋招该如何平衡 #
722909次浏览 8551人参与
# 我的实习求职记录 #
6122473次浏览 83955人参与
# 如果再来一次,你还会选择这个工作吗? #
110690次浏览 1113人参与
# 25届机械人为了秋招做了哪些准备? #
25032次浏览 356人参与
# 签了三方后想毁约怎么办 #
18569次浏览 111人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
9973次浏览 215人参与
# 机械求职避坑tips #
22215次浏览 241人参与
# 游戏求职进展汇总 #
52808次浏览 344人参与
# 夸夸我的求职搭子 #
132042次浏览 1360人参与
# 腾讯求职进展汇总 #
207633次浏览 1694人参与
# 实习想申请秋招offer,能不能argue薪资 #
35796次浏览 308人参与