(*medium)LeetCode 233.Number of Digit One

Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n.

For example:
Given n = 13,
Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13.

代码如下:

public class Solution {
    public int countDigitOne(int n) {
        if(n<=0)
          return 0;
        int j=1,k=n,constant=0;
        while(k>=10){
            k/=10;
            j*=10;
        }
        if(k>1){
            constant=j;
        }else{
            constant=n%j+1;
        }
        return constant+k*countDigitOne(j-1)+countDigitOne(n%j);
    }
}

 运行结果:

 

时间: 2024-10-22 16:10:20

(*medium)LeetCode 233.Number of Digit One的相关文章

LeetCode 233. Number of Digit One

Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example:Given n = 13,Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13. 本来想凑一个关于阶乘的题目,做个笔记,不枉我昨天A八个

Java for LeetCode 233 Number of Digit One

Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example: Given n = 13, Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13. 解题思路: 递归 static public in

[LeetCode]233 Number of Digit One(数位DP)

题目链接:https://leetcode.com/problems/number-of-digit-one/?tab=Description 题意:求[1,n]内1的个数. 裸数位DP,好久不写都快不会写了..这么水 1 class Solution { 2 public: 3 int dp[30][30]; 4 int digit[30]; 5 6 int dfs(int l, int cnt, bool flag) { 7 if(l == 0) return cnt; 8 if(!flag

【LeetCode】233. Number of Digit One

题目: Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example: Given n = 13, Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13. 代码: class Solution {

233. Number of Digit One

题目: Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example:Given n = 13,Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13. 链接: http://leetcode.com

233. Number of Digit One *HARD* -- 从1到n的整数中数字1出现的次数

Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example:Given n = 13,Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13. Hint: Beware of overflow. c

[LeetCode][JavaScript]Number of Digit One

Number of Digit One Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example:Given n = 13,Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13. 数学题,真是为

[LeetCode]67. Number of Digit One1的个数和

Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example:Given n = 13,Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13. Hint: Beware of overflow. S

[leedcode 233] Number of Digit One

Given an integer n, count the total number of digit 1 appearing in all non-negative integers less than or equal to n. For example:Given n = 13,Return 6, because digit 1 occurred in the following numbers: 1, 10, 11, 12, 13. public class Solution { pub