排列:选排列和全排列通项公式,求解《357. 统计各位数字都不同的数字个数》

2022-04-11 11:44:09
什么是排列,什么是选排列和全排列,排列的通项公式,用排列求解《357. 统计各位数字都不同的数字个数》

计算排列数的通项公式

排列

n不同元素取出m个元素,排成一列,叫做排列

选排列和全排列

排列数的通项公式

例题

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

给你一个整数 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;
    }
}