问题
例子
思路
暴力法超时(两个for)
-
方法1
$$$$
-
方法2
$$$$
代码
//方法1
class Solution {
public int countDigitOne(int n) {
int res=0,i=1,num=n;
while(num>0){
if(num%10==0) res+=(num/10)*i;
if(num%10==1) res+=(num/10)*i+1+n%i;
if(num%10>1) res+=(num/10)*i+i;
num/=10;
i*=10;
}
return res;
//方法2