357.统计各位数字都不同的数字个数
357.统计各位数字都不同的数字个数
题解
题目:给你一个n,代表n位数,比如n=2,求[0,99]中,各位数字都不同的值的数量,特别的n=0时为1
思路:第一位数[0,9]中,0不能取,所以范围是9,第二位数[0,9]中,第一位取过的不能取,所以范围是9,第三位数[0,9]中,第一、二位取过的不能取,所以范围是8,以此类推
特别的,在n=1时,答案是10,此时0是可以取的
代码
func countNumbersWithUniqueDigits(n int) int { if n == 0 { return 1 } scope := []int{9, 9, 8, 7, 6, 5, 4, 3, 2, 1} ans := 1 cnt := 1 for i := 0; i < n; i++ { cnt *= scope[i] ans += cnt } return ans }