求互不相同的数的个数(范围:0<=x<10^n)
易知当n=0是,就一个0
当n=10时0-9
其余情况:
首先最高位可以使1-9
接下来哪一位与最高位不同,但是多了一个0,也是9位
接下来与次高位和最高位不同位8位
。7
。6
。1
1 class Solution { 2 public: 3 int countNumbersWithUniqueDigits(int n) { 4 if(n==0)return 1; 5 if(n==1)return 10; 6 int k=9,num=n,nextk=9; 7 n--; 8 while(n--) { 9 k*=nextk; 10 nextk--; 11 } 12 num--; 13 return k+countNumbersWithUniqueDigits(num); 14 } 15 };
时间: 2024-10-23 03:43:30