public class Solution {
public int countNumbersWithUniqueDigits(int n) {
int[] dp = new int[11];
String choices = "9987654321";
dp[0] = 1;
dp[1] = 10;
for (int i = 2; i <= 10; i++) {
int val = 1;
for (int j = 0; j < i; j++) {
val *= choices.charAt(j) - '0';
}
dp[i] = val + dp[i - 1];
}
return n > 10 ? dp[10] : dp[n];
}
}
public int countNumbersWithUniqueDigits(int n) {
if (n == 0) return 1;
int res = 10;
int uniqueDigits = 9;
int availableNumber = 9;
while (n-- > 1 && availableNumber > 0) {
uniqueDigits = uniqueDigits * availableNumber;
res += uniqueDigits;
availableNumber--;
}
return res;
}