题目要求 0 <= n <= 8
边界情况:
- 当
n = 0时,0<= x < 1得x = 0 - 当
n = 1时,0<= x < 10得x = 0 ~ 9 - 当
n = 2时,0<= x < 100得x的范围由两部分组成如下:
- 一位数的x,可以按照情况1和情况2计算
- 两位数的x,可以由组合数学计算:第一位的选择有9种(1 ~ 9),第二位的选择有9种(0 ~ 9,要保证和第一位值不一样)
一般化推导出,当2<= n <= 10时,x = 9 * A ,再加上含有小于n位数的x的个数,就是答案了
var countNumbersWithUniqueDigits = function (n) {
if (n === 0) return 1;
if (n === 1) return 10;
var res = 10, cur = 9;
for (var i = 0; i < n - 1; i++) {
cur = cur * (9 - i);
res = res + cur;
}
return res;
};