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;
    }
};
相关推荐
shehuiyuelaiyuehao16 分钟前
算法21,搜索插入位置
python·算法·leetcode
charlie11451419125 分钟前
基于开源项目的现代C++工程实践——OnceCallback 前置知识(下):C++20/23 高级特性
c++·开源·c++20
蜡笔小马1 小时前
04.C++设计模式-桥接模式
c++·设计模式·桥接模式
_深海凉_1 小时前
LeetCode热题100-回文链表
算法·leetcode·链表
小雅痞1 小时前
[Java][Leetcode middle] 54. 螺旋矩阵
java·leetcode·矩阵
pursuit_csdn1 小时前
力扣周赛 501
算法·leetcode·职场和发展
AbandonForce1 小时前
LeetCode 滑动窗口个人思路详解
算法·leetcode·职场和发展
Liangwei Lin1 小时前
LeetCode 45. 跳跃游戏 II
数据结构·算法·leetcode
宏笋1 小时前
C++ using typedef #define 三者的优缺点比较
c++
枕星而眠1 小时前
一篇吃透 C++ 核心基础:初始化、引用、指针、内联、重载、右值引用
开发语言·数据结构·c++·后端·visual studio