Leecode面试题43. 1~n整数中1出现的次数

简介: Leecode面试题43. 1~n整数中1出现的次数

输入一个整数 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

解题思路:利用动态规划的思想来解决这个题

每次用 n / i并用一个变量将其存储起来,同时将它的余数存储起来,这个余数可以用来得到它离最近一个(向下取整)整除10的1的个数

class Solution {
    public int countDigitOne(int n) {
        int count = 0;
        for(int i = 1; i <= n; i *= 10){
           //取的 n除以i 的商的整数部分
            int number = n/i;
            //取的n除以i 的余数部分
            int remainder = n%i;
            //取的number个位数部分
            int d = number%10;
            //取的number 除以 10 的商的整数部分
            int xyz = number/10;
            //计算1出现的次数
            count += xyz*i;
            if(d > 1) count += i;
            if(d == 1) count += remainder+1;
            if(xyz == 0) break;
        }
        return count;
    }
}

提交记录如下:


相关文章
|
3月前
Leecode之面试题消失的数字
Leecode之面试题消失的数字
|
11月前
Leecode 面试题62. 圆圈中最后剩下的数字
Leecode 面试题62. 圆圈中最后剩下的数字
46 0
|
11月前
|
存储
Leecode 面试题 17.16. 按摩师
Leecode 面试题 17.16. 按摩师
41 0
|
11月前
Leecode面试题40. 最小的k个数
Leecode面试题40. 最小的k个数
43 0
|
11月前
Leecode 面试题 01.06. 字符串压缩
Leecode 面试题 01.06. 字符串压缩
29 0
|
11月前
Leecode 面试题57 - II. 和为s的连续正数序列
Leecode 面试题57 - II. 和为s的连续正数序列
37 0
|
11月前
|
机器学习/深度学习
Leecode面试题64
Leecode面试题64
46 0
|
11月前
|
Java
Leecode 面试题09用两个栈实现队列
Leecode 面试题09用两个栈实现队列
49 0
|
2月前
|
Java 程序员
java线程池讲解面试
java线程池讲解面试
62 1
|
3月前
|
存储 关系型数据库 MySQL
2024年Java秋招面试必看的 | MySQL调优面试题
随着系统用户量的不断增加,MySQL 索引的重要性不言而喻,对于后端工程师,只有在了解索引及其优化的规则,并应用于实际工作中后,才能不断的提升系统性能,开发出高性能、高并发和高可用的系统。 今天小编首先会跟大家分享一下MySQL 索引中的各种概念,然后介绍优化索引的若干条规则,最后利用这些规则,针对面试中常考的知识点,做详细的实例分析。
253 0
2024年Java秋招面试必看的 | MySQL调优面试题