Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.
Example:
Input: 2
Output: 91
Explanation: The answer should be the total numbers in the range of 0 ≤ x < 100,
excluding 11,22,33,44,55,66,77,88,99
Code (Java):
class Solution {
public int countNumbersWithUniqueDigits(int n) {
if (n >= 11) {
return 0;
}
int ans = 1;
for (int i = 1; i <= n; i++) {
int factor = 9;
int num = 9;
for (int j = 2; j <= i; j++) {
num *= factor;
factor--;
}
ans += num;
}
return ans;
}
}
Note:
1. The most significant bit can't be 0, so it can only be 1 to 9, so the second bit has 9 possible digits.
2. n can be at most 10. If n is greater than 10, the result will be 0. That's because of the pigeonhole theory.
No comments:
Post a Comment