这道题其实难度不大,因为主要是使用数学运算,在位数是0和1的情况下,可以直接返回,但如果位数大于等于2,我们要考虑第一位的选取不能是0,而后面的位数选取从剩下的9个数中选择n-1个。
func countNumbersWithUniqueDigits(n int) int {
if n == 0 {
return 1
}
if n == 1 {
return 10
}
// 位数从2开始,第一位选取1-9个数其中一个,后面从剩余的9个数中选择n-1个
ans, cur := 10, 9
for i := 0; i < n-1; i++ {
cur *= 9 - i
ans += cur
}
return ans
}