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]
)
Hint:
Credits:
Special thanks to @memoryless for adding this problem and creating all test cases.
1 public class Solution { 2 public int countNumbersWithUniqueDigits(int n) { 3 if (n > 10) return 0; 4 if (n == 0) return 1; 5 6 int result = 10; // [0, 10) has 10 digits satisfying the condition 7 int x = 9, y = 9; 8 while (n > 1) { 9 result += x * y; 10 x *= y; 11 y--; 12 n--; 13 } 14 return result; 15 } 16 }
Count Numbers with Unique Digits
原文:http://www.cnblogs.com/amazingzoe/p/6440354.html