请计算出 1-n(1<=n<=1000000000) 中有多少个数字中,只存在 '1','2','3' 这三个数字,且这三个数字至少都要出现 1 次。输入一个数 n。输出 1-n 中符合要求的数字的个数。
寻找这种神奇数字,暴力法可以说是从数字中“尝试”某个数字,是否符合我们的标准,这个过程好比线性搜索。但换个思路想,我们也可以尝试用“构建”的方式,构建出所有符合“神奇数字”标准的数字,并挨个计数,完成这个过程。这个构建数字和搜索的过程,可以写一个递归做深度搜索实现:从 0 开始,给一个较短的数字,不断让把的其它位数字移动1位,并把多出来的个位数设为1,2,3,并在搜索的范围超过 n 时,及时停下搜索。 因此输入:232 输出:4
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。