一、题解
给定一个整数 n,计算所有小于等于 n 的非负整数中数字 1 出现的个数。
示例 1: 输入:n = 13 输入:n = 0 提示: 0 <= n <= 2 * 109 来源:力扣(LeetCode) |
二、题目难度:困难
三、题解
class Solution { public: int countDigitOne(int n) { int res = 0; for(long long i=1;i<=n;i *= 10){ long long interval = i * 10; res += n/interval * i + min(i,max(0LL,n%interval-i+1)); } return res; } };