C++ | Leetcode C++题解之第233题数字1的个数

题目:

题解:

cpp 复制代码
class Solution {
public:
    int countDigitOne(int n) {
        // mulk 表示 10^k
        // 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)
        // 但为了让代码看起来更加直观,这里保留了 k
        long long mulk = 1;
        int ans = 0;
        for (int k = 0; n >= mulk; ++k) {
            ans += (n / (mulk * 10)) * mulk + min(max(n % (mulk * 10) - mulk + 1, 0LL), mulk);
            mulk *= 10;
        }
        return ans;
    }
};
相关推荐
c2385612 小时前
c/c++中的二叉树进阶
c语言·c++·算法
晚风吹红霞12 小时前
C++模板进阶:非类型参数、特化、分离编译与优缺点解析
开发语言·c++
不会C语言的男孩13 小时前
C++ Primer 第8章:IO 库
开发语言·c++
磊 子13 小时前
C++仿函数以及STL内置仿函数
开发语言·c++
王璐WL13 小时前
【C++进阶】map/multimap 容器详解:从基础使用到底层实现与高频面试题
c++
_日拱一卒13 小时前
LeetCode:46全排列
算法·leetcode·职场和发展
剑挑星河月13 小时前
31.下一个排列
java·算法·leetcode
凌波粒13 小时前
LeetCode--98.验证二叉搜索树(二叉树)
算法·leetcode·职场和发展
Misnearch13 小时前
3635. 最早完成陆地和水上游乐设施的时间II
leetcode·贪心·排序
basketball61614 小时前
设计模式入门:5. 代理模式详解 C++实现
c++·设计模式·代理模式