当前位置:网站首页>剑指 Offer 43. 1~n 整数中 1 出现的次数(递归、数学)
剑指 Offer 43. 1~n 整数中 1 出现的次数(递归、数学)
2022-08-09 12:45:00 【养猪去】
举个例子: n = 2304 。答案为四个部分之和:
- 所有小于等于2304的正整数中,个位出现1的次数.
- 所有小于等于2304的正整数中,十位出现1的次数.
- 所有小于等于2304的正整数中,百位出现1的次数.
- 所有小于等于2304的正整数中,千位出现1的次数.
循环地计算每个位上出现的1的次数。(个位、十位、百位、…)
class Solution {
public int countDigitOne(int n) {
// mulk 表示 10^k
// 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)
// 但为了让代码看起来更加直观,这里保留了 k
long mulk = 1;
int ans = 0;
// 1234 567
for (int k = 0; n >= mulk; ++k) {
ans += (n / (mulk * 10)) * mulk + Math.min(Math.max(n % (mulk * 10) - mulk + 1, 0), mulk);
mulk *= 10;
}
return ans;
}
}
边栏推荐
- Flutter Getting Started and Advanced Tour (4) Text Input Widget TextField
- Rust 入门指南(使用JSON)
- Flutter入门进阶之旅(二)Hello Flutter
- 批量读取word docx文件指定表格内容,保存在excel文件中
- Flutter入门进阶之旅(七)GestureDetector
- Go 事,如何成为一个Gopher ,并在7天找到 Go 语言相关工作,第1篇
- Rust from entry to proficient 04 - data types
- 注释、关键字、标识符的区别你知道吗?
- Flutter入门进阶之旅(十)Dialog&Toast
- 乐东消防救援大队应邀为干部开展消防安全培训
猜你喜欢
随机推荐
Flutter Getting Started and Advanced Tour (1) - Getting to Know Flutter
关于Retrofit网络请求URL中含有可变参数的处理
电脑重装系统还原0x80070005错误如何解决
ftplib+ tqdm upload and download progress bar
ftplib+ tqdm 上传下载进度条
FPGA - Summary of bugs in ISE (in update)
Data Mining-06
Rust从入门到精通04-数据类型
保存Simulink仿真模型为图片或者PDF的方法
批量读取word docx文件指定表格内容,保存在excel文件中
telnet+ftp 对设备进行 操控 和 升级
read stream 特别注意
腾讯发布第二代四足机器人Max,梅花桩上完成跳跃、空翻
注释、关键字、标识符的区别你知道吗?
glibc 内存管理模型 释放 C库内存缓存
十六进制字符→十进制数字
GIN初探,环境安装
陈强教授《机器学习及R应用》课程 第十三章作业
Go 事,如何成为一个Gopher ,并在7天找到 Go 语言相关工作,第1篇
Flutter入门进阶之旅(十)Dialog&Toast