
从n个不同元素取出m个元素,排成一列,叫做排列
m < n,选排列m = n,全排列给你一个整数
n,统计并返回各位数字都不同的数字x的个数,其中0 <= x < 10n。
n = 0,各位都不同的数字为0
n = 1,为 0 + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
n = 2,为 n = 1 + 9 x 9(十位:1 - 9 个位 0 - 9 - 十位)
n = 3,为 n = 2 + 9 x 9 x 8(百位:1 - 9 十位 0 - 9 - 百位 个位 0 - 9 - 百位 - 十位 )
...
var countNumbersWithUniqueDigits = function(n) {
if (n === 0) return 1
let sum = 10, cur = 9
for (let i = 0; i < n - 1; i++) {
cur *= 9 - i
sum += cur
}
return sum
};
func countNumbersWithUniqueDigits(n int) int {
if n == 0 {
return 1
}
sum, cur := 10, 9
for i := 0; i < n - 1; i++ {
cur *= 9 - i
sum += cur
}
return sum
} class Solution {
function countNumbersWithUniqueDigits($n) {
if ($n === 0) return 1;
$sum = 10;$cur = 9;
for ($i = 0; $i < $n - 1; $i++) {
$cur *= 9 - $i;
$sum += $cur;
}
return $sum;
}
}