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]
)
class Solution {
public:
int countNumbersWithUniqueDigits(int n) {
if(n>10){
n=10;
}
int A[]={1,10,91,739,5275,32491,168571,712891,2345851,5611771,8877691};
return A[n];
}
};
思路心得:
目测这个方法是最快的了吧- =
鸽巢原理不可能有在n>11下还有更多的没有一个数字不重复的情况的。
其实就是高中排列组合。
正道方法应该用DP从尾开始算,使用组合数....
但是知道一定只有10个答案那我就打表了。
O(1)和O(1)