您的位置:首页 > 产品设计 > UI/UE

【Leetcode】357. Count Numbers with Unique Digits

2016-06-13 20:20 411 查看

题目描述:

Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.

解题分析:

    题目要就就是找出 0≤ x < 10n中各位数字都不相同的数的个数。要接触这道题只需要理解:

1.设f(n)表示n为数字中各位都不相同的个数,则有countNumbersWithUniqueDigits(n)=f(1)+f(2)+……+f(n)=f(n)+countNumbersWithUniqueDigits(n-1);

2.对于f(n),由于首位不能为0,之后n--1位可以选不重复的任意数字,所以这是一个高中常见的概率题,可能性为9*9*8*……(所以可能出现的不可能超过10位);

  理解了以上两点,这道题就很好得出。

具体代码:

public class Solution {
public static int countNumbersWithUniqueDigits(int n) {
if(n<0)
return 0;
if(n==0){
return 1;
}
if(n==1)
return 10;
if(n==2)
return 91;
int sum=9;
int index=0;
while(index<n-1){
int m=9-index;
if(m<=0)
break;
sum=sum*m;
index++;
}
int result = sum+countNumbersWithUniqueDigits(n-1);
return result;
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: