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;
    }
};
相关推荐
持梦远方17 小时前
持梦行文本编辑器(cmyfEdit):架构设计与十大核心功能实现详解
开发语言·数据结构·c++·算法·microsoft·visual studio
小灰灰搞电子17 小时前
C++ 文件操作详解
开发语言·c++·文件操作
im_AMBER17 小时前
Leetcode 90 最佳观光组合
数据结构·c++·笔记·学习·算法·leetcode
Trouvaille ~17 小时前
【C++篇】智能指针详解(一):从问题到解决方案
开发语言·c++·c++11·类和对象·智能指针·raii
POLITE318 小时前
Leetcode 3.无重复字符的最长子串 JavaScript (Day 4)
javascript·算法·leetcode
sin_hielo18 小时前
leetcode 756(枚举可填字母)
算法·leetcode
Jeremy爱编码18 小时前
leetcode热题子集
算法·leetcode·职场和发展
Tisfy18 小时前
LeetCode 756.金字塔转换矩阵:深度优先搜索
leetcode·矩阵·深度优先
Wang153018 小时前
c++与Java谁的性能更胜一筹
java·c++
努力学算法的蒟蒻19 小时前
day48(12.29)——leetcode面试经典150
算法·leetcode·面试