列表

详情


357. 统计各位数字都不同的数字个数

给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10n 

 

示例 1:

输入:n = 2
输出:91
解释:答案应为除去 11、22、33、44、55、66、77、88、99 外,在 0 ≤ x < 100 范围内的所有数字。 

示例 2:

输入:n = 0
输出:1

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int countNumbersWithUniqueDigits(int n) { } };

python3 解法, 执行用时: 40 ms, 内存消耗: 13.4 MB, 提交时间: 2020-11-26 14:22:11

class Solution:
    def countNumbersWithUniqueDigits(self, n: int) -> int:
        if n == 0: return 1
        if n > 10: n = 10
        ans, summ, base = 10, 9, 9
        for i in range(1, n):
            summ *= base
            ans += summ
            base -= 1
        return ans
        

python3 解法, 执行用时: 44 ms, 内存消耗: 13.6 MB, 提交时间: 2020-11-26 12:03:26

class Solution:
    def countNumbersWithUniqueDigits(self, n: int) -> int:
        
        def help(n: int):
            if n == 0:
                return 1
            if n == 1:
                return 9
            return (11-n) * help(n-1)
        return sum([help(i) for i in range(n+1)])
        

上一题