从今天起做一个自律的人,为了明天做一个懒人!
思路:
打表找规律
0 | 1
1 | 10
2 | 81 = 9 * 9
3 | 648 = 9 * 9 * 8
…
类似于高中的排列组合,
第一个数字有 9 种可能,每次的可能性依次减少1,根据简单打表可以发现这个规律。
需要注意对于0 和 1的特殊情况
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
if(n == 0){
return 1;
}
int ret = 10, p = 9, cur = 9;
while (n > 1) {
ret += cur * p;
cur *= p;
p--;
n--;
}
return ret;
}
};