1到n中1出现的次数
参考链接https://www.cnblogs.com/lengender-12/p/6876897.html
- 右边第i位出现的1的次数的权重是pow(10,i-1)
- 该位置左边的数字乘以该权重为p1
- 修正值就是需要判断该位置上是否大于1,或者等于1
- 如果大于1,那么还需要增加一个单位的权重
- 如果等于1,需要增加i右边的数字的个数
class Solution {
public:
int NumberOf1Between1AndN_Solution(int n)
{
//设计在第i位上的出现的次数
//i位右边得到基础值a
//i位上的数字进行修正
int curr=0;
int preCurr=0;
int backCurr=0;
int ret=0;
int k=n;
for(int i=1;k=n/i;i*=10){
preCurr=k/10;
curr=k%10;
backCurr=n-k*i;
ret+=preCurr*i;
if(curr>1)
ret+=i;
else if(curr==1)
ret+=backCurr+1;
else
continue;
}
return ret;
}
};

300

被折叠的 条评论
为什么被折叠?



