357. 统计各位数字都不同的数字个数

357. 统计各位数字都不同的数字个数

给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10n

示例 1:

输入:n = 2
输出:91
解释:答案应为除去 11、22、33、44、55、66、77、88、99 外,在 0 ≤ x < 100 范围内的所有数字。 

示例 2:

输入:n = 0
输出:1

提示:

  • 0 <= n <= 8

思路:

​ 排列组合,一个数最高位有9种选择1-9,如果要不一样,那么下一位就是9种(0-9是10个减去最高位选的)再下一位就是8种。然后加上比所求数小一位的答案就好

class Solution {
public:
    int countNumbersWithUniqueDigits(int n) {
        if(n==0)return 1;
        if(n==1)return 10;
        int ans=10;int cur=9;
        for(int i=0;i<n-1;i++){
            cur*=9-i;
            ans+=cur;
        }
        return ans;
    }
};
posted @   BailanZ  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示