给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
vector<int> dp(n + 1);
//特殊情况 n = 0时
if(n == 0)
return 1;
//特殊情况 n = 1时
if(n == 1)
return 10;
dp[1] = 9;
int sum = 10;
//剩下的dp[i]就是排列组合了
for(auto i = 2; i <= n; ++i){
dp[i] = dp[i - 1] * (11 - i);
sum += dp[i];
}
return sum;
}
};
Accepted
9/9 cases passed (0 ms)
Your runtime beats 100 % of cpp submissions
Your memory usage beats 74.44 % of cpp submissions (5.8 MB)