Count Numbers with Unique Digits LeetCode Solution

Last updated on October 6th, 2024 at 02:00 pm

Here, We see Count Numbers with Unique Digits LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.

List of all LeetCode Solution

Topics

Backtracking, Dynamic Programming, Math

Companies

Google

Level of Question

Medium

Count Numbers with Unique Digits LeetCode Solution

Count Numbers with Unique Digits LeetCode Solution

Problem Statement

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

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

1. Count Numbers with Unique Digits Leetcode Solution C++

class Solution {
public:
    int countNumbersWithUniqueDigits(int n) {
        int sum = 1;
        if(n &gt; 0)
        {
           int end = (n &gt; 10)? 10 : n;
           for(int i = 0; i &lt; end; i++)
           {
               sum += 9 * permutation(9, i);
           }
        }
        return sum;        
    }
        int permutation(int n, int r)
    {
        if(r == 0)
        {
            return 1;
        }else{
            return n * permutation(n - 1, r - 1);
        }
    }
};

2. Count Numbers with Unique Digits Leetcode Solution Java

class Solution {
	public int countNumbersWithUniqueDigits(int n) {
		if (n &gt; 10) {
			return countNumbersWithUniqueDigits(10);
		}
		int count = 1; // x == 0
		long max = (long) Math.pow(10, n);
		boolean[] used = new boolean[10];
		for (int i = 1; i &lt; 10; i++) {
			used[i] = true;
			count += search(i, max, used);
			used[i] = false;
		}
		return count;
	}
	private int search(long prev, long max, boolean[] used) {
		int count = 0;
		if (prev &lt; max) {
			count += 1;
		} else {
			return count;
		}
		for (int i = 0; i &lt; 10; i++) {
			if (!used[i]) {
				used[i] = true;
				long cur = 10 * prev + i;
				count += search(cur, max, used);
				used[i] = false;
			}
		}
		return count;
	}
}

3. Count Numbers with Unique Digits Solution JavaScript

var countNumbersWithUniqueDigits = function(n) {
    return [1,10,91,739,5275,32491,168571,712891,2345851][n]
};

4. Count Numbers with Unique Digits Solution Python

class Solution(object):
    def countNumbersWithUniqueDigits(self, n):
        def count(k):
            if k == max(10 - n, 0):
                return 0
            return k*(1 + count(k - 1))
        if n == 0:
            return 1
        return 9*count(9) + 10   
Scroll to Top