从1到n整数中1出现的次数
思路:
常规方法求解: 1. 我们先去统计一个数中有多少个1,比如111,这个数里面有3个1
2. 然后遍历1---n,不断累加count
缺陷:每个数都要求余和除法,效率低,如果一个数字为n,那么这个数的位数为log(n),一个数求log(n)次,即
时间复杂度: O(n*log(n))
int GetCount(int n) //该函数用于计算一个数中有几个1
{
if (n <= 0)
{
return 0;
}
int count = 0;
while (n)
{
if (n % 10 == 1)
{
count++;
}
n = n / 10;
}
return count;
}
int GetCount1Andn(int n)
{
if (n <= 0)
{
return 0;
}
int count = 0;
int i = 1;
for (; i <= n; ++i)
{
count = count + GetCount(i); //累加次数
}
return count;
}