Count numbers with unique digits

November 11, 2022

math-and-geometry

Problem URL: Count numbers with unique digits

For the first (most left) digit, we have 9 options (no zero); for the second digit we used one but we can use 0 now, so 9 options; and we have 1 less option for each following digits. Number can not be longer than 10 digits.

class Solution:
    def countNumbersWithUniqueDigits(self, n: int) -> int:
        res, temp = 1, 1
        for i in range(1, n+1):
            res = 9 * temp + res
            temp = temp * (10-i)
        return res

Time Complexity: O(n)
Space Complexity: O(1)