方法
算法思想:找规律,然后递推
时间复杂度:O(logn)
空间复杂度:O(1)
边界条件:
补充知识:
class Solution {
public int countDigitOne(int n) {
int dig=1,res=0;
int high=n/10,cur=n%10,low=0; //初始
while(high!=0||cur!=0){ //看图
if(cur==0) res += high * dig;
else if(cur == 1) res += high * dig + low + 1;
else res += (high + 1) * dig;
low += cur * dig;
cur = high % 10;
high /= 10;
dig *= 10;
}
return res;
}
}