关注
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-03 14:11
广西大学 渠道销售 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
47236次浏览 364人参与
# 夸夸我的求职搭子 #
199880次浏览 1917人参与
# 你认为小厂实习有用吗? #
17557次浏览 217人参与
# 硬件应届生薪资是否普遍偏低? #
75122次浏览 518人参与
# 应届生,你找到工作了吗 #
19567次浏览 144人参与
# 三一重工求职进展汇总 #
13072次浏览 60人参与
# 材料人,你们签了哪个公司 #
7233次浏览 17人参与
# 说说你知道的学历厂 #
33373次浏览 194人参与
# 计算机有哪些岗位值得去? #
15164次浏览 142人参与
# 下班后的时间你怎么安排 #
9120次浏览 131人参与
# 你找工作的时候用AI吗? #
16781次浏览 217人参与
# 面试尴尬现场 #
28530次浏览 193人参与
# 在职场上,你最讨厌什么样的同事 #
14963次浏览 151人参与
# 哪一瞬间觉得自己长大了 #
8320次浏览 183人参与
# 中核求职进展汇总 #
20567次浏览 152人参与
# 社会教会你的第一课 #
32759次浏览 424人参与
# 电网笔面经互助 #
36565次浏览 354人参与
# lastday知无不言 #
57533次浏览 469人参与
# 简历当中有水分算不算造假? #
26208次浏览 385人参与
# 如何拒绝/反向PUA #
68946次浏览 356人参与