image.png

    官方题解:
    image.png
    image.png

    1. class Solution {
    2. public int countDigitOne(int n) {
    3. // mulk 表示 10^k
    4. // 在下面的代码中,可以发现 k 并没有被直接使用到(都是使用 10^k)
    5. // 但为了让代码看起来更加直观,这里保留了 k
    6. long mulk = 1;
    7. int ans = 0;
    8. for (int k = 0; n >= mulk; ++k) {
    9. ans += (n / (mulk * 10)) * mulk + Math.min(Math.max(n % (mulk * 10) - mulk + 1, 0), mulk);
    10. mulk *= 10;
    11. }
    12. return ans;
    13. }
    14. }

    作者:LeetCode-Solution
    链接:https://leetcode-cn.com/problems/1nzheng-shu-zhong-1chu-xian-de-ci-shu-lcof/solution/1n-zheng-shu-zhong-1-chu-xian-de-ci-shu-umaj8/
    来源:力扣(LeetCode)
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。