leetcode 357

求互不相同的数的个数(范围: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 };

 

posted @ 2016-08-03 09:40  HYDhyd  阅读(96)  评论(0编辑  收藏  举报