Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < .
Example:
Input: 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
题意:给出一个n,求中有多少个数字完全不重复的数。例如给出2,=100,0~100中有11 22....99九个重复的数,所以不重复的数有91个,以此类推。
思路:根据推论,当n=1时,不重复数num[1] = 10;
当n=2时,num[2] = 9*9;
当n=3时,num[3] =9*9*8;
```
当n=10时,num[10] =9*8*7*6*5*4*3*2*1;
当n>=11时,10个数字组成>=11位的数时,必定有重复的数,num[11]=9*8*7*6*5*4*3*2*1*0。
将所有num相加,即为总共不重复的数。
代码:
class Solution {
public int countNumbersWithUniqueDigits(int n) {
if(n ==0 ){ //n^0=1
return 1;
}
int uniqueDigits = 9;
int result = 10;
int loop = 9;
while( (--n>0) && (loop>0)){
uniqueDigits *= loop;
result +=uniqueDigits;
loop--;
}
return result;
}
}