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

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

提示:

  • 0 <= n <= 8

思路:

​ 排列组合,一个数最高位有9种选择1-9,如果要不一样,那么下一位就是9种(0-9是10个减去最高位选的)再下一位就是8种。然后加上比所求数小一位的答案就好

class Solution {
public:
    int countNumbersWithUniqueDigits(int n) {
        if(n==0)return 1;
        if(n==1)return 10;
        int ans=10;int cur=9;
        for(int i=0;i<n-1;i++){
            cur*=9-i;
            ans+=cur;
        }
        return ans;
    }
};
posted @ 2022-04-11 08:59  BailanZ  阅读(31)  评论(0编辑  收藏  举报