关注
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;
}
请问一下第一题的二分是这种思路吗
查看原帖
点赞 评论
相关推荐
查看3道真题和解析 点赞 评论 收藏
分享
xiaowl:你这个简历“条目上”都比较有深度性,但是实际上面试官又没法很好的评估你是怎么达到很多看上去很厉害的结果的。要避免一些看上去很厉害的包装,比如高效的内存复用策略的表达,如果仅是简单的一些内存共享机制,而且面试上也没有深挖的空间,就不要这样表达。比如,工程化模式本质上可能就是定义了一些abstract class,那也就没特别多值得讲的内容。建议简历上应该侧重那些你花了大量时间和精力解决、研究的问题,不要过分追求“丰富”,而是关注在技术深入度、问题解决能力的表现上。 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 如果春招能重来,我会___ #
24099次浏览 252人参与
# 有深度的简历长什么样? #
59229次浏览 756人参与
# 在爱玛,骑向未来 #
15325次浏览 337人参与
# 这个offer值得去吗? #
23788次浏览 187人参与
# 刚入职就____,这样正常吗? #
144432次浏览 694人参与
# 除了线上,还能去哪些地方投简历 #
12837次浏览 121人参与
# 联宝杯大学生创新大赛,你的技术值得产业级答案 #
48283次浏览 521人参与
# 字节开奖 #
153743次浏览 714人参与
# 上班苦还是上学苦呢? #
345855次浏览 2076人参与
# 你见过最离谱的招聘要求是什么? #
281227次浏览 1886人参与
# 今年形式下双非本找得到工作吗 #
329143次浏览 1776人参与
# 大学四年该怎么过,才不算浪费时间? #
24031次浏览 108人参与
# 薪资爆料 #
423448次浏览 2228人参与
# 字节求职进展汇总 #
1851951次浏览 15438人参与
# 双非应该如何逆袭? #
589447次浏览 6410人参与
# 影石Insta360求职进展汇总 #
190518次浏览 1386人参与
# 双非本科求职如何逆袭 #
1652300次浏览 13099人参与
# 实习怎么做才有更好的产出 #
50311次浏览 460人参与
# 提名点击就挂的公司 #
144431次浏览 492人参与
# 简历上的经历如何包装 #
293915次浏览 4121人参与
# 我的秋招“寄”录 #
476761次浏览 3065人参与
# 牛友投递互助,不漏校招机会 #
483023次浏览 5350人参与