每日一题力扣357 排列组合

 

 

给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 

class Solution:
    def countNumbersWithUniqueDigits(self, n: int) -> int:
        if n==0:#当n==0时只有0
            return 1

        n=min(n,10)#限制10位数以下
        res=10#如果是1位数
        cur=9#从最高位开始乘
        k=9#每次都减去1
        for i in range(2,1+n):
            cur*=k#第二位也可以选9种,和第一位一样,从第三位才开始减去1
            k-=1
            res+=cur#加上原来的取法
        return res

 

posted @ 2021-03-12 15:55  小千北同学超爱写代码  阅读(120)  评论(0编辑  收藏  举报