Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.
Example:
Given n = 2, return 91. (The answer should be the total numbers in the range of 0 ≤ x < 100, excluding [11,22,33,44,55,66,77,88,99]
)
Analysis:
A number of unique digits is a number which is a combination of unrepeated digits. So, we can calculate the total number. for number with n digits, like 100-999 or 1000-9999, the total numbers with unique digits equals to 9*9*8...*(11-n). because the highest digit cannot be 0.
Solution:
1 public class Solution { 2 public int countNumbersWithUniqueDigits(int n) { 3 if (n==0) return 1; 4 5 int res = 10; 6 int cur = 9; 7 for (int i=2;i<=Math.min(10,n);i++){ 8 cur = cur*(11-i); 9 res += cur; 10 } 11 return res; 12 } 13 }