小旭讲解 LeetCode 357. Count Numbers with Unique Digits
小旭讲解 LeetCode 357. Count Numbers with Unique Digits

题目^{[1]}

思路 – 组合数学

n = 0 时,方案数量为 1 种,即 x = 0

n = 1 时,方案数量为 10 种,即 x = \{0, 1, 2, 3, 4, 5, 6, 7, 8, 9\}

n >= 2 时,最高位不可有前导零,故有 9 种选择,次高位有 9 种选择,次次高位有 8 种选择,以此类推。假设数的位数为 d,那么该位数情况下,其有方案数为 9 * A^{d-1}_9

代码

class Solution {
public:
    int countNumbersWithUniqueDigits(int n) {
        if (n == 0) return 1;
        if (n == 1) return 10;
        int ans = 10, cur = 9;
        for (int i=1;i<n;++i) {
            cur = cur * (10 - i);
            ans += cur;
        }
        return ans;
    }
};

参考

[1]. LeetCode 原题. https://leetcode.com/problems/minimum-absolute-sum-difference/

欢迎分享,引用。若转载,请联系我,谢谢配合。
本文地址:https://qoogle.top/xiaoxu-tutorial-leetcode-357-count-numbers-with-unique-digits/
0 0 votes
Article Rating
Subscribe
提醒
guest

 

0 评论
Inline Feedbacks
View all comments