题解 | #JZ43 整数中1出现的次数(从1到n整数中1出现的次数)#
整数中1出现的次数(从1到n整数中1出现的次数)
http://www.nowcoder.com/practice/bd7f978302044eee894445e244c7eee6
```function NumberOf1Between1AndN_Solution(n)
{
// write code here
//注意时间复杂度,暴力解法不可取
//参考https://blog.nowcoder.net/n/c503c1bb13724f1792fe5456c86c5059?f=comment 以下是我的js版本
let base=1 //位数从个位数开始,以下函数在位数为个位数和最大位数时即低位b为0和高位a为0时仍然成立,可以自己模拟
let res=0
while(base<=n){
let cur=Math.floor(n/base%10)
let a=Math.floor(n/base/10)
let b=n%base
if(cur===0){ res +=a*base}
else if(cur===1){res+=a*base+(b+1)}
else {res +=(a+1)*base}
base *=10 //位数向左移一位
}
return res
}
module.exports = {
NumberOf1Between1AndN_Solution : NumberOf1Between1AndN_Solution
};