首页 > 其他 > 详细

计算各个位数不同的数字个数

时间:2021-02-02 22:13:32      阅读:38      评论:0      收藏:0      [点我收藏+]

此博客链接:

计算各个位数不同的数字个数

题目链接:https://leetcode-cn.com/problems/count-numbers-with-unique-digits/

题目

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

示例:

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

题解

题目是给一个位数,让求位数可以组成多少种不同的数字,示例给的2意思是给一个两位数,可以组成91中不同的数字。

我们可以先举例看,当给一位数时,可以组成10种数,0~9;

当给两位数时,第一位可以选1~9(9种),第二位可以选0~9,但是需要去掉和前面一位相同的数字(共9种),

当给三位数时,第一位可以选1~9(9种),第二位可以选0~9,但是需要去掉前面一位相同的数字(共9种),第三位可以选0~9,但是需要去掉前面两种数字(共8种)

......依次类推,当给n位数时,可以组成()

代码

class Solution {
    public int countNumbersWithUniqueDigits(int n) {
        if(n==0)
        return 1;
       int count=10;
       int temp=9;
       int p=9;
       for(int i=1;i<n;i++)
       {
            temp*=p;
            p--;
            count+=temp; 
       }
       return count;
    }
}

 

结果

技术分享图片

 

计算各个位数不同的数字个数

原文:https://www.cnblogs.com/ping2yingshi/p/14364120.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!