357. Count Numbers with Unique Digits

1. Description

Given an integer n, return the count of all numbers with unique digits, x, where 0 <= x < $10^n$.

2. Example

Example 1:
Input: n = 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

Example 2:
Input: n = 0
Output: 1

3. Constraints

  • 0 <= n <= 8

4. Solutions

Math

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

class Solution {
public:
    int countNumbersWithUniqueDigits(int n) {
        int result = 0;
        switch (n) {
        case 8:
            result += 9 * 9 * 8 * 7 * 6 * 5 * 4 * 3;
        case 7:
            result += 9 * 9 * 8 * 7 * 6 * 5 * 4;
        case 6:
            result += 9 * 9 * 8 * 7 * 6 * 5;
        case 5:
            result += 9 * 9 * 8 * 7 * 6;
        case 4:
            result += 9 * 9 * 8 * 7;
        case 3:
            result += 9 * 9 * 8;
        case 2:
            result += 9 * 9;
        case 1:
            result += 9;
        case 0:
            result += 1;
        }
        return result;
    }
};

comments powered by Disqus