整数中出现1的次数(从1到n整数中1出现的次数)
offer_31
概要:整数中出现1的次数(从1到n整数中1出现的次数)
题目描述
求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)
- 思路分析:
- 0-9 为一个循环,出现1的次数为1次,
- 如果当前值为1
- 说明多出现了 当前值的 后面的数字+1次
- 比如11
先出现10*权值(1)次
,也就是0-9循环了10次; - 然后当前值为个位的1,需要再加 后面的数字+1次,也就是 0 +1 ;所以总的次数就是11次
- 比如11
- 说明多出现了 当前值的 后面的数字+1次
- 如果当前值大于1
- *说明多出现了 当前值的 权值 *1次
- 比如12
先出现10*权值(1)次
,也就是0-9循环了10次; - 然后当前值为个位的2,需要再加 当前值的 权值 *1次 ,也就是 1 +1 ;所以总的次数就是12次
- 比如12
- *说明多出现了 当前值的 权值 *1次
- 提出公共部分 ”
先出现10*权值(1)次
“放在最前面
代码实现:
public class Solution {
public int NumberOf1Between1AndN_Solution(int n) {
int cur; //每轮循环求cur位置上的1的个数
int result = 0; //统计出现的总次数
int mul = 1; //用来记录cur位置处于那个位置,个位,十位,百位...也就是权值
int input = n; //保存输入,便于取到当前位置后面的的数值 例如123 当前是1,为了取到23
int target = 1; //取值1-9,表示求的target出现的个数,如本题为1
while (n != 0) {//把当前值的最高位查完 如123
cur = n % 10;//取出最后一位 3
n /= 10;//剩下的数字12
result += n * mul; // 12 *1+0 就是当前位置 前面的数字 乘以当前位置的权值,代表转了多少圈,毕竟都是0-9累加的,前面数字多少就代表走了多少圈,也就是多少个1
if (cur > target) {// 3 >1如果当前值比1大,就说明多了一次,比如123 当前是3 是比1大,说明多出现了一次,这个一次就例如 1
result += 1 * mul; //权值*1加上之前的值
}
else if (cur == target) {//如果当前值等于一,说明出现了当前值后面的数字次1还要加1次
result += input % mul + 1;
}
mul *= 10;
}
return result;
}
}
整数中出现1的次数(从1到n整数中1出现的次数)的更多相关文章
- 整数中1出现的次数(从1到n整数中1出现的次数)
整数中1出现的次数(从1到n整数中1出现的次数) 题目描述 求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1 ~ 13中包含1的数字有1.10 ...
- 剑指Offer-31.整数中1出现的次数(从1到n整数中1出现的次数)(C++/Java)
题目: 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了.A ...
- 31.整数中1出现的次数(从1到n整数中1出现的次数)
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...
- php字符串查找函数 php查找字符串中出现的次数函数substr_count,判断字符串中是否包含另一个字符串函数strpos
php字符串查找函数 php查找字符串中出现的次数函数substr_count,判断字符串中是否包含另一个字符串函数strpossubstr_count($haystack, $needle [,$o ...
- python1.返回一个字符串中出现次数第二多的单词 2.字符串中可能有英文单词、标点、空格 3.字符串中的英文字符全部是小写
import re from collections import Counter def second_count_word(s): # # 利用正则按标点和空格切割,有其他标点可以添加到[]内 # ...
- 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组
题目描述: 给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明:初始化 nums1 和 nums2 的元素数量分别为 m ...
- LoadRunner中Action的迭代次数的设置和运行场景中设置
LoadRunner中Action的迭代次数的设置和运行场景中设置 LoadRunner是怎么重复迭代和怎么增加并发运行的呢? 另外,在参数化时,对于一次压力测试中均只能用一次的资源应该怎么参数化呢? ...
- 对于大于等于3的整数n,在区间【n,3/2 * n】中一定存在一个素数
对于大于3的整数n,在区间[n,3/2 * n]中一定存在一个素数
- 4.产生10个1-100的随机数,并放到一个数组中 (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。 (2)把数组中的数字放到当前文件夹的numArr.txt文件中
package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayLis ...
- Python学习之---Python中的内置函数(方法)(更新中。。。)
add(item) #将item添加到s中,如果item已经在s中,则无任何效果 break #退出循环,不会再运行循环中余下的代码 bool() #将参数转换为布尔型 by ...
随机推荐
- js获取的 后端的列表。
1.引号被转码 处理办法 {% autoescape off %} var tmp = '{{ data1 }}'; var tmp = '{{ data2 }}'; {% endautoescape ...
- Visual Studio Code 使用总结
记录一下个人在使用 VS Code 中的一些插件和设置. 该配置在编写 vue + iview 项目时使用. 文件路径 用户文件路径:%AppData%/Code/User 用户设置:sett ...
- Linux系统Shell脚本第四章:shell函数
目录 一.shell函数 1.函数的作用 2.函数使用步骤 3.定义函数基本格式 4.函数变量 5.退出函数 6.函数位置变量与脚本位置变量区别 一.shell函数1.函数的作用定义较为复杂的但是需要 ...
- 京准GPS北斗卫星时钟同步系统投运国电内蒙古晶阳能源有限公司
京准GPS北斗卫星时钟同步系统投运国电内蒙古晶阳能源有限公司 2020年1月初期,我京准科技生产研发的GPS北斗卫星时钟同步系统投运国电内蒙古晶阳能源有限公司,为该单位的能源管理系统及其他各业务子系 ...
- JWT 工具类的编写
导入JWT pom依赖 <!--JWT 依赖--><dependency> <groupId>io.jsonwebtoken</groupId> < ...
- vue3 门户网站搭建1-路由
从 0 到 1搭建门户网站,记录一下. 因为需求不大,所以比较简单,门户和后台管理直接一个项目出来,路由配置则想的是: 1.门户,用 /portal 标识 2.后台管理,用 /admin 标识 3. ...
- Access 时间查询 与 SQL SERVER 不一样的几个地方
最近用到了ACCESS 数据库 ,与之前用SQL SERVER 还是有点区别的. 1. 时间 之间 用 # 连接 如下: public static string GetUserInfo(stri ...
- GIS空间分析和建模复习重点2
10.缓冲区和缓冲区分析的概念 (1)缓冲区分析分为 点缓冲区分析:一般是围绕点对象建立一定半径的圆形区域. 线缓冲区分析:沿着线的两侧建立距离为缓冲距的带状区域. 面缓冲区分析:是沿着多边形的边界建 ...
- Day24:结论的撰写&&openid再次尝试
今日完成的任务: 1.完成部分总报告结论的撰写. 2.再次尝试获取openid 根据官方文档,wx.login()的回调函数中,需要我们传递生成的用户登录凭证到code2accessToken的接口中 ...
- 在idea中查看jar包源码
文章目录 准备jar包 idea打开文件夹 最后一步 准备jar包 例如,我准备看resin的jar,在桌面准备了一份 idea打开文件夹 在idea中file====>open=====> ...