给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。
示例:
输入: 2
输出: 91
解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。
代码
class Solution {
int numbers=0;
public int countNumbersWithUniqueDigits(int n) {
if(n==0) return 1;
countNumbers(n,0,0,new boolean[10]);
return numbers;
}
public void countNumbers(int n,int sum,int level,boolean[] check) {
if(level!=0) {
numbers++;
}
if(level==n)
{
return;
}
for(int i=0;i<10;i++)
{
if(check[i]||check[0]&&level>0) continue;
check[i]=true;
countNumbers(n,sum*10+i,level+1,check);
check[i]=false;
}
}
}