给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10n 。
数学概率统计
纯粹的数学模拟问题,直接先C计算首位数字,后A计算其余数字
fun函数功能时计算A函数,即A!
class Solution {
public int countNumbersWithUniqueDigits(int n) {
int count = 0;
if (n > 10) {
n = 10;
}
if(n==0)
return 1;
//先取数子,后排序,注意0的位置不可以开头
while (n > 0) {
//先取首位,后判断尾巴
if (n == 1) {
count += 10;
} else {
count += 9.0 * fun(9) / fun(10 - n) ;
}
n--;
}
return count/1;
}
//-------------------------------------------------------
public static int fun(int num) {
int count = 1;
while (num > 0) {
count *= num--;
}
return count;
}
}
遍历
为了保护电脑,就不造作了,反正肯定会超时。