描述
阿丘科技C++软件开发工程师笔试编程题第三题
输入一个整数 n ,求 1~n 这 n 个整数的十进制表示中 1 出现的次数
例如, 1~13 中包含 1 的数字有 1 、 10 、 11 、 12 、 13 因此共出现 6 次
注意:11 这种情况算两次
数据范围: 1 <= n <= 30000
进阶:空间复杂度 O(1),时间复杂度O(logn)
答案及解析
转自牛客
1 | 主要思路:设定整数点(如1、10、100等等)作为位置点i(对应n的各位、十位、百位等等),分别对每个数位上有多少包含1的点进行分析; |
1 | int NumberOfOneBetween1AndN(long long n) |