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

Posted 龙场驿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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;
    }
};

 

以上是关于[Leetcode] 第357题 计算各个位数不同的数字个数的主要内容,如果未能解决你的问题,请参考以下文章

LeetcodeCount Numbers with Unique Digits(计算各个位数不同的数字个数)

计算各个位数不同的数字个数

算法题5求不同进制表示的位数之和的均值

LeetCode_22_Apr_2nd_Week

京东2017校招编程题

算法66------计算各个位数不同的数字个数动态规划