题目
给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。
示例:
输入: 2
输出: 91
解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/count-numbers-with-unique-digits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
这题可以从题目得出结果关于 n的公式,根据公式编写代码即可
遇到的问题
当n=0的时候,结果是1,是不是空值也算一个??
代码
class Solution:
def countNumbersWithUniqueDigits(self, n: int) -> int:
if(n==0):
return 1
elif (n==1):
return 10
elif(n<11):
count=10
multi=1
for i in range(2,n+1):
for j in range(1,i):
multi=multi*(10-j)
count=count+9*multi
multi=1
else:
count=10
multi=1
for i in range(2,11):
for j in range(1,i):
multi=multi*(10-j)
count=count+9*multi
multi=1
return count
结果
执行用时 :
44 ms, 在所有 python3 提交中击败了61.22%的用户
内存消耗
13.7 MB, 在所有 python3 提交中击败了8.16%的用户
结论
每次在内存中都没超过太多用户,还是菜