\
一位数字有10种,0到10
两位数字有9*9种不同的数
三位数字有9*9*8
四位数字有9*9*8*7
.... 最多只可能到10位,超过10位必有重复。
把上面的数学公式转化成代码就行、
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
if(n==0) return 1;
n = min(10,n); // 当n超过10以后一定会有重复的
int res = 10;
int k = 9;
for(int i=2;i<=n;i++){
k = k*(11-i);
res+=k;
}
return res;
}
};