357. Count Numbers with Unique Digits

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public int countNumbersWithUniqueDigits(int n) {
if (n == 0) {
return 1;
}

int ans = 10; // 当 n = 1 时 x 的个数
for (int i = 2, last = 9; i <= n; i++) { // 仅计算 i 位数时 x 的个数,如 i = 2 即计算 [10, 99] 中 x 的个数
int count = last * (10 - i + 1); // 当 i = 2 时,count = 9 * 9, 当 i = 3 时,count = 9 * 9 * 8
ans += count;
last = count;
}

return ans;
}
}

References

357. Count Numbers with Unique Digits