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;
    }
};
相关推荐
人道领域36 分钟前
【LeetCode刷题日记】二叉树翻转:递归与迭代全解析
java·算法·leetcode
tankeven37 分钟前
C++ 数组
c++
宏笋41 分钟前
C++ 完美转发和应用场景
c++
进击的荆棘43 分钟前
递归、搜索与回溯——综合(上)
c++·算法·leetcode·深度优先·dfs
水云桐程序员8 小时前
C++可以写手机应用吗
开发语言·c++·智能手机
风筝在晴天搁浅12 小时前
快手/字节 CodeTop LeetCode 415.字符串相加
算法·leetcode
小黄人软件12 小时前
C++读写编辑CSV文件示例源码 用于数据导入导出,比Excel好使
开发语言·c++·excel
郭涤生12 小时前
C++各个版本的性能和安全性总结
开发语言·c++
wljy113 小时前
二、静态库的制作和使用
linux·c语言·开发语言·c++
道剑剑非道13 小时前
FFmpeg 6.0 实战:用 C++ 封装摄像头采集与 RTSP 推流
开发语言·c++·ffmpeg