[LeetCode](面试题43)1~n整数中1出现的次数
程序员文章站
2022-03-22 08:33:57
题目输入一个整数 n ,求1~n这n个整数的十进制表示中1出现的次数。例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。示例 1:输入:n = 12输出:5示例 2:输入:n = 13输出:6限制:1 <= n < 2^31解题思路参考K神思路 面试题43. 1~n 整数中 1 出现的次数代码class Solution { public int countDigitOne(int n) { in...
题目
输入一个整数 n
,求1~n这n个整数的十进制表示中1出现的次数。
例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。
示例 1:
输入:n = 12
输出:5
示例 2:
输入:n = 13
输出:6
限制:
1 <= n < 2^31
解题思路
参考K神思路 面试题43. 1~n 整数中 1 出现的次数
代码
class Solution {
public int countDigitOne(int n) {
int res = 0;
int digit = 1, high = n/10, cur = n%10, low = 0;
// 当 high 和 cur 同时为 0 时,说明已经越过最高位,因此跳出
while(high != 0 || cur != 0){
if(cur==0){
res += high*digit;
}else if(cur==1){
res += high*digit+low+1;
}else{
res += (high+1)*digit;
}
low += cur*digit;
cur = high%10;
high /= 10;
digit *= 10;
}
return res;
}
}
本文地址:https://blog.csdn.net/zaker123/article/details/107303709
推荐阅读
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer JZ31 整数中1出现的次数 Python 解
-
【剑指offer】_11整数中1出现的次数
-
【LeeCode 中等 数学 python3】剑指 Offer 43. 1~n整数中1出现的次数
-
剑指offer 从1到n整数中1出现的次数
-
剑指offer32题:整数中1出现的次数(从1到n整数中1出现的次数)
-
整数中1出现的次数(从1到n整数中1出现的次数)(剑指offer第32题)
-
剑指offer:(32)时间效率 :整数中1出现的次数(从1到n整数中1出现的次数)
-
【剑指offer】从1到n整数中1出现的次数(查找)
-
剑指offer---从1到n整数中1出现的次数