题目

类型:数学
image.png

解题思路

对于n位数,第一位有除0以外的9个数可选。
对于剩余数位,每次选前面没被选的,可选数从9依次递减。
当n大于0时,需要再叠加上第一位选0,相当于n-1位数的答案数。

代码

  1. class Solution {
  2. public int countNumbersWithUniqueDigits(int n) {
  3. if(n == 0)
  4. return 1;
  5. int ans = 9;
  6. for(int i = 9; i > 10 - n; i--)
  7. ans *= i;
  8. return ans + countNumbersWithUniqueDigits(n - 1);
  9. }
  10. }