Skip to content

Latest commit

 

History

History
29 lines (23 loc) · 803 Bytes

357. 统计各位数字都不同的数字个数.md

File metadata and controls

29 lines (23 loc) · 803 Bytes

357. 统计各位数字都不同的数字个数

题目传送门

点击这里

解题思路

这道题其实难度不大,因为主要是使用数学运算,在位数是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
}