优化前:
class Solution {
public int countNumbersWithUniqueDigits(int n) {
if(n==0)return 1;
int dp = 10;
for(int i=2;i<=n;i++){
dp = dp +calc(i-1)*9;
}
return dp;
}
int calc(int x){
int a = 1;
int b = 9;
for(int i=0;i<x;i++)
a *= b--;
return a;
}
}
优化后
class Solution {
public int countNumbersWithUniqueDigits(int n) {
if(n==0)return 1;
int dp = 10;
int v = 81;
int var = 8;
for(int i=2;i<=n;i++){
dp = dp + v;
v = v*var--;
}
return dp;
}
}