从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;
}
}