题目描述
思路
排列组合
当n=0时,0≤x<1,则x只有一种选择就是0;当n=1时,0≤x<10,x有10种选择,为0-9;当n=2时,0≤x<100,则x的选择就由两部分组成,只有一位数的x和有两位数的x,只有一位数的x可以由n=1的情况计算,有两位数的x可以使用排列组合进行计算,第一位的选择有9种,为1-9,第二位的选择也有9种,为0-9中除去第一位以外的其他数。对于n>2的情况则与n=2的计算方法类似。
Python实现
class Solution:
def countNumbersWithUniqueDigits(self, n: int) -> int:
if n == 0: return 1
if n == 1: return 10
res, cur = 10, 9
for i in range(n-1):
cur *= 9-i
res += cur
return res
Java实现
class Solution {
public int countNumbersWithUniqueDigits(int n) {
if (n == 0) {
return 1;
}
if (n == 1) {
return 10;
}
int res = 10, cur = 9;
for (int i = 0; i < n-1; i++) {
cur *= 9-i;
res += cur;
}
return res;
}
}