Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Sword To Offer 031 - 整数中1出现的次数(从1到n整数中1出现的次数)

Sword To Offer 031 - 整数中1出现的次数(从1到n整数中1出现的次数)

作者头像
Reck Zhang
发布于 2021-08-11 03:14:07
发布于 2021-08-11 03:14:07
50300
代码可运行
举报
文章被收录于专栏:Reck ZhangReck Zhang
运行总次数:0
代码可运行

整数中1出现的次数(从1到n整数中1出现的次数)

Desicription

求出113的整数中1出现的次数,并算出1001300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。

Solution

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
private:
    vector<int> digit;
    vector<vector<int>> dp;

    int DigitDP(int length, bool isMax, int count) {
        if(length == 0) {
            return count;
        }
        if(~dp[length][count] && !isMax) {
            return dp[length][count];
        }
        int currentDigit = isMax ? digit[length] : 9;
        int total = 0;
        for(int i = 0; i <= currentDigit; i++) {
            if(i == 1) {
                total += DigitDP(length - 1, isMax && currentDigit == i, count + 1);
            } else {
                total += DigitDP(length - 1, isMax && currentDigit == i, count);
            }
        }
        return isMax ? total : dp[length][count] = total;
    }

public:
    int NumberOf1Between1AndN_Solution(int n) {
        digit = vector<int>(30);
        dp = vector<vector<int>>(30, vector<int>(30, -1));
        int index = 0;
        while(n) {
            digit[++index] = n % 10;
            n /= 10;
        }
        return DigitDP(index, true, 0);
    }
};
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
剑指Offer-整数中1出现的次数(从1到n整数中1出现的次数)
package Other; /** * 整数中1出现的次数(从1到n整数中1出现的次数) * 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? * 为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。 * ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。 */ public class Solution21 { public static void ma
武培轩
2018/04/18
8950
[剑指offer] 整数中1出现的次数(从1到n整数中1出现的次数)
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
尾尾部落
2018/09/04
1K0
剑指offer No.31 整数中1出现的次数
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
week
2020/04/22
2710
整数中1出现的次数
题目 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数? 为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。 ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
名字是乱打的
2022/05/13
6810
【剑指offer】31.整数中1出现的次数
求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
AI那点小事
2020/07/21
3550
剑指Offer的学习笔记(C#篇)-- 整数中1出现的次数(从1到n整数中1出现的次数)
原谅我只会最垃圾的办法,难受啊,马飞!!这种方法的思路就是一次次的除10取余数,余数是1就+1,效率低的一笔。。
WeiMLing
2019/08/23
5760
【算法专栏】整数中1出现的次数
求出 1~13的整数中1出现的次数,并算出 100~1300的整数中1出现的次数?为此他特别数了一下 1~13中包含1的数字有 1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
ConardLi
2019/05/23
5760
[剑指offer题解][Java]1到n整数中1出现的次数
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
蛮三刀酱
2019/09/10
7000
每天一道剑指offer-整数中1出现的次数
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
乔戈里
2019/03/06
8030
[剑指offer题解][Java]1到n整数中1出现的次数
求出1 ~ 13的整数中1出现的次数,并算出100 ~ 1300的整数中1出现的次数?为此他特别数了一下1 ~ 13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
Rude3Knife的公众号
2019/08/06
7250
剑指Offer(三十一)-- 整数中1出现的次数
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
秦怀杂货店
2022/02/15
3530
牛客网-剑指offer-10
主要是想为什么会有最大的和,一个情况是,新加上的数比原来的数都要大,就要开始考虑需不需要原来的数了。所以我们需要两个数,一个保存最大的和,用来返回,一个 保存当前的和,可以在适当的时候丢掉。 另一种情况,加入的数都比原来的小,即都是负数的时候,可能最大和只是一个最小的数;另外,当都是正数的时候也比较好解决。 代码如下:
小二三不乌
2018/08/07
4780
C++版 - 剑指offer 面试题32:从1到n整数中1出现的次数(leecode233. Number of Digit One) 题解
剑指offer 面试题32:从1到n整数中1出现的次数(Leecode233. Number of Digit One)
Enjoy233
2019/03/05
6260
每日算法题:Day 16(Python)
求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。
算法工程师之路
2019/08/20
5120
《剑指offer》– 数组中的逆序对、最小的K个数、从1到n整数中1出现的次数、正则表达式匹配、数值的整数次方
数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007。
全栈程序员站长
2021/12/23
9160
《剑指offer》– 数组中的逆序对、最小的K个数、从1到n整数中1出现的次数、正则表达式匹配、数值的整数次方
腾讯课堂 IMWeb 七天前端求职提升营 Day 6
本次的系列博文主要是针对 腾讯课堂七天前端求职提升营 课程中,所推送的面试题目及编程练习的一次汇总,期间还包括三次直播课的分享,均由腾讯导师给大家讲解,该系列博文的发布已得到 IMWeb 前端学院助教的许可
Nian糕
2018/08/21
4840
腾讯课堂 IMWeb 七天前端求职提升营 Day 6
剑指 offer -JavaScript 版(第3期23-32题)
21.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)
前端迷
2019/12/19
3010
剑指offer 43——1~n整数中1出现的次数
例如,输入12,1~12这些整数中包含1 的数字有1、10、11和12,1一共出现了5次。
健程之道
2020/06/16
3450
整数中1出现的次数(从1到n整数中1出现的次数)_31
注解:参考一位牛友提到的leetcode的链接网址(包括求1~n的所有整数中2,3,4,5,6,7,8,9出现的所有次数) 通过使用一个 位置乘子m 遍历数字的位置, m 分别为1,10,100,1000…etc.(m<=n)
名字是乱打的
2021/12/23
9860
整数中1出现的次数(从1到n整数中1出现的次数)_31
python-剑指offer21-40
输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
西西嘛呦
2020/08/26
5270
推荐阅读
相关推荐
剑指Offer-整数中1出现的次数(从1到n整数中1出现的次数)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文