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;
    }
};
相关推荐
tachibana214 小时前
hot100 课程表(207)
java·数据结构·算法·leetcode
神仙别闹14 小时前
编写基于C++ Huffman 算法的无损压缩程序和解压程序
java·c++·算法
炸膛坦客14 小时前
单片机/C/C++八股:(二十三)#define 和 typedef 的区别
c语言·c++·单片机
旖-旎14 小时前
《LeetCode 646 最长数对链 || LeetCode 1143 最长公共子序列》
c++·算法·leetcode·动态规划
Frostnova丶15 小时前
(15)LeetCode 189. 轮转数组
数据结构·算法·leetcode
阿米亚波15 小时前
【C++ STL】std::list
c++·windows·笔记·stl·list
橙色阳光五月天15 小时前
CMake 构建配置文件解析
c++·cmake·plugin
载数而行52015 小时前
C++进阶 Linux相关的静态库,动态库,第三方库
c++
c2385616 小时前
下篇:伸缩魔法!进阶吃透可变滑动窗口篇
c++·算法
来一碗刘肉面16 小时前
顺序表的按值查找
数据结构·c++·算法