JAVA程序设计: 计算各个位数不同的数字个数(LeetCode:357)

给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n 。

示例:

输入: 2
输出: 91 
解释: 答案应为除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 区间内的所有数字。

思路:附上我在LeetCode上写的题解,思路非常清晰、代码简介。

class Solution {
    public int countNumbersWithUniqueDigits(int n) {
     int ans=1,num=10;
     int[] arr=new int[n+1];
     arr[0]=1;
     for(int i=1;i<=n;i++) arr[i]=arr[i-1]*(--num);
     for(int i=1;i<=n;i++) ans+=(i-1)*arr[i-1]+arr[i];
     return ans;
    }

 

你可能感兴趣的:(JAVA程序设计: 计算各个位数不同的数字个数(LeetCode:357))