LeetCode Solutions
357. Count Numbers with Unique Digits
Time: $O(9)$ Space: $O(1)$
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
if (n == 0)
return 1;
int ans = 10;
int uniqueDigits = 9;
for (int availableNum = 9; n > 1 && availableNum > 0; --n, --availableNum) {
uniqueDigits *= availableNum;
ans += uniqueDigits;
}
return ans;
}
};
class Solution {
public int countNumbersWithUniqueDigits(int n) {
if (n == 0)
return 1;
int ans = 10;
int uniqueDigits = 9;
for (int availableNum = 9; n > 1 && availableNum > 0; --n, --availableNum) {
uniqueDigits *= availableNum;
ans += uniqueDigits;
}
return ans;
}
}
class Solution:
def countNumbersWithUniqueDigits(self, n: int) -> int:
if n == 0:
return 1
ans = 10
uniqueDigits = 9
availableNum = 9
while n > 1 and availableNum > 0:
uniqueDigits *= availableNum
ans += uniqueDigits
n -= 1
availableNum -= 1
return ans