剑指Offer 整数中1出现的次数(从1到n整数中1出现的次数)
2024-10-19 02:25:20
题目描述
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。
思路:
1.暴力。
2.通过当前位的数值,计算当前位为1的的数有多少个,然后相加。
代码:
1.
class Solution {
public:
int NumberOf1Between1AndN_Solution(int n)
{
int iCount=;
for(int i=;i<=n;i++)
{
iCount+=count1(i);
}
return iCount; } int count1(int n)
{ int iNum=;
while(n!=)
{
iNum+=(n%==)?:;
n/=;
} return iNum;
}
};
2:
class Solution {
public:
int NumberOf1Between1AndN_Solution(int n)
{
int cout=;
int factor=;
int nownum=;
int highnum=;
int lownum=; while(n/factor)
{
lownum=n-(n/factor)*factor;
nownum=(n/factor)%;
highnum=n/(factor*); switch(nownum)
{
case :
cout+=highnum*factor;break;
case :
cout+=highnum*factor+lownum+;break;
default:
cout+=(highnum+)*factor;
break;
}
factor*=;
}
return cout;
}
};
最新文章
- 盒子 offsetLeft、offsetTop、offsetWidth、getBoundingClientRect等属性解释
- C++STL - 模板的其他特性
- JS根据登录的城市不同调用不同的内容
- Jquery 的事件方法
- 1.8---字符串是否是旋转而成(CC150)
- Windows Phone开发工具初体验【转载】
- Java并发——使用Condition线程间通信
- 医院设置 codevs 2577
- java项目获取路径的几种方式
- [剖析Javascript原理]1.原生数据类型
- [Tool] Git 使用 与 Git Flow
- 一篇文章搞定SpringMVC参数绑定
- luoguP4705 玩游戏
- LVS详细介绍以及遇到的坑
- js学习——函数
- Open Nginx gzip
- phpcms 加载微信类库,生成签名
- 外网访问局域网ip的方法
- Centos6.5网络配置
- elasticsearch5.0集群大数据量迁移方法及注意事项