[Leetcode] 第357题 计算各个位数不同的数字个数

一、题目描述

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

示例:

输入: 2
输出: 91 
解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。

二、题目解析

排列组合。第一位有9种,第二位有9种,....第10位有1种,大于10位肯定有重复,返回0

三、代码实现

class Solution {
public:
    int countNumbersWithUniqueDigits(int n) {
        if (!n)return 1;
        if (n > 10)return 0;
        int res = 10, tmp = 9;
        for (int i = 1; i < n; ++i) {
            tmp *= (10 - i);
            res += tmp;
        }
        return res;
    }
};
原文地址:https://www.cnblogs.com/zhizhiyu/p/10171283.html