关注
楼主加油!链接:https://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6?answerType=1&f=discussion 来源:牛客网 方法一:递归方法(参考力扣答案) 思路: f(n)为1-n范围内,这n个数中1出现的次数 首先将n分为两种情况:情况一:最高位为1(如1234);情况二:最高位不为1(如3234) 情况一:当最高位为1时(以1234为例): ①:将n分为两部分,最高位单独拿出来为1,定义为high;剩下的部分为234,定义为last; ②:获取到最高位的分位,为千分位,即定义pow=1000; ③将数据n定义两个范围: 1.1-999范围内,1的个数为f(pow-1); 2.1000-1234范围内: 1)首先只考虑千分位是1的个数:也就是1000、1001、1002...1234,即234+1,转换下为:last+1 2)其次考虑其他位数上的1的个数为:f(last)。 综上所述:情况一中1出现的次数为:f(pow-1)+last+1+f(last) 情况二:当最高为不为1时(以3234为例): ①:1-999范围内,1的个数依然为:f(pow-1); ②:1000-1999范围内: 1)只考虑千分位是1的个数为:1000、1001、1002...1999即1000个也就是pow; 2)其他位数上1的数量为:f(pow-1) ③:2000-2999范围内1的个数:f(pow-1),注意这里的千分位是2,所以不要考虑分两种情况 ④:3000-3234范围内1的个数:f(last)
1
相关推荐
05-11 13:46
北京航空航天大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 我的实习收获 #
26343次浏览 455人参与
# 非技术岗简历怎么写 #
209410次浏览 2856人参与
# 实习吐槽大会 #
27827次浏览 135人参与
# 如果有时光机,你最想去到哪个年纪? #
46865次浏览 795人参与
# 晒一晒你的工位 #
84763次浏览 302人参与
# 我的租房踩坑经历 #
22746次浏览 248人参与
# 打工人的工作餐日常 #
40339次浏览 343人参与
# 软开人,说说你的烦心事 #
47979次浏览 359人参与
# 穿越回高考你还会选现在的专业吗 #
19320次浏览 243人参与
# 被AI治愈的瞬间 #
52142次浏览 595人参与
# 毕业旅行去哪玩儿 #
1088次浏览 32人参与
# 怎么防止在试用期被辞退 #
122208次浏览 910人参与
# 26届秋招投递记录 #
2292次浏览 73人参与
# 2025牛客秋招季 #
2293次浏览 75人参与
# 双非能在秋招上岸吗? #
214853次浏览 1136人参与
# 高学历就一定能找到好工作吗? #
47554次浏览 591人参与
# 携程求职进展汇总 #
530900次浏览 3961人参与
# 夸夸我的求职搭子 #
190911次浏览 1891人参与
# 实习中的菜狗时刻 #
368402次浏览 3306人参与
# 工作压力大怎么缓解 #
79425次浏览 936人参与