【leetcode】357. Count Numbers with Unique Digits

題目:
在這裏插入圖片描述


思路:
規律如下:
f(0)=1
f(1)=10
f(2)=9*9+f(1)
f(3)=9*9*8+f(2)
f(4)=9*9*8*7+f(3)
f(5)=9*9*8*7*6+f(4)
f(6)=9*9*8*7*6*5+f(5)
f(7)=9*9*8*7*6*5*4+f(6)
f(8)=9*9*8*7*6*5*4*3+f(7)
f(9)=9*9*8*7*6*5*4*3*2+f(8)
f(10)=9*9*8*7*6*5*4*3*2*1+f(9)
大於10的情況全爲0,因爲就10個數字,肯定都會重複。


代碼實現:

class Solution {
public:
    int countNumbersWithUniqueDigits(int n) {
        if (n == 0){
            return 1;
        }
        if (n > 10){
            return 0;
        }
        
        int pre_uniq = 10;
        int multi = 9;
        int t = 9;
        for (int i = 2; i <= n; ++i){
            t *= multi;
            pre_uniq += t;
            --multi;
        }
        
        return pre_uniq;
    }
};

在這裏插入圖片描述


參考:
https://leetcode.com/problems/count-numbers-with-unique-digits/discuss/83041/JAVA-DP-O(1)-solution.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章