LeetCode(剑指 Offer)- 43. 1~n 整数中 1 出现的次数

Posted 放羊的牧码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode(剑指 Offer)- 43. 1~n 整数中 1 出现的次数相关的知识,希望对你有一定的参考价值。

题目链接:点击打开链接

题目大意:

解题思路

相关企业

  • 亚马逊
  • 微软(Microsoft)
  • 苹果(Apple)

AC 代码

  • Java
class Solution 
    public int countDigitOne(int n) 
        int digit = 1, res = 0;
        int high = n / 10, cur = n % 10, low = 0;
        while(high != 0 || cur != 0) 
            if(cur == 0) res += high * digit;
            else if(cur == 1) res += high * digit + low + 1;
            else res += (high + 1) * digit;
            low += cur * digit;
            cur = high % 10;
            high /= 10;
            digit *= 10;
        
        return res;
    
  • C++
class Solution 
public:
    int countDigitOne(int n) 
        long digit = 1;
        int high = n / 10, cur = n % 10, low = 0, res = 0;
        while(high != 0 || cur != 0) 
            if(cur == 0) res += high * digit;
            else if(cur == 1) res += high * digit + low + 1;
            else res += (high + 1) * digit;
            low += cur * digit;
            cur = high % 10;
            high /= 10;
            digit *= 10;
        
        return res;
    
;

以上是关于LeetCode(剑指 Offer)- 43. 1~n 整数中 1 出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 43. 1~n 整数中 1 出现的次数

LeetCode(剑指 Offer)- 43. 1~n 整数中 1 出现的次数

LeetCode(剑指 Offer)- 64. 求1+2+…+n

LeetCode13. 罗马数字转整数 / 剑指 Offer 42. 连续子数组的最大和 / 剑指 Offer 43. 1~n 整数中 1 出现的次数

我用java刷 leetcode 剑指 Offer 64. 求1+2+…+n

LeetCode(剑指 Offer)- 17. 打印从1到最大的n位数