Leetcode 357.Count Number With Unique Digits

題目描述:

357. Count Numbers with Unique Digits

Given a non-negative integer n, count all numbers with unique digits, x, where 0 ≤ x < 10n.

其實(shí)這個(gè)題目不怎么需要?jiǎng)討B(tài)規(guī)劃的知識(shí),感覺有點(diǎn)像找規(guī)律填數(shù)字。
可以把題目拆開,先思考固定長度為n的所有數(shù)中有多少個(gè)數(shù)字均不相同的數(shù)。
另之為f[n],可得:
f[1] = 10; (0, 1,2,3,4,5,6,7,8,9)
f[2] = 9 × 9; (9 ×9,可以在1 - 9 中選出一個(gè)數(shù)字為長度為2的數(shù)字的第一位,在0 以及 1 - 9 除去被先前選中的數(shù)字中選出一個(gè)數(shù)字為長度為2的數(shù)字的第二位)
f[3] = 9 × 9 × 8;
f[4] = 9 × 9 × 8 × 7;
f[5] = 9 × 9 × 8 × 7 × 6;
f[6] = 9 × 9 × 8 × 7 × 6 × 5;
......
f[10] = 9 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 × 1;
f[11] = 0;
f[12] = 0;

所以源程序可以這么寫 !

 int countNumbersWithUniqueDigits(int n) {
        if(n == 0){
            return 1;
        }else if(n > 10){
            return 0;
        }
        int result = 10;
        int uniqueDigits = 9;
        int availableNumber = 9;
        while(n > 1 && availableNumber > 0){
            uniqueDigits *= availableNumber;
            res += uniqueDigits;
            n -- ;
            availableNumber --;
        }
        return res;
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,923評(píng)論 0 33
  • 天還是被霧霾籠罩著,灰蒙蒙的,仍然看不見從前的藍(lán)天,但是過的理所當(dāng)然,毫無愧疚。也許這就是冷血?jiǎng)游锇?!還是好面的強(qiáng)...
    麥子上的土地閱讀 330評(píng)論 0 0
  • 1.冷靜下來再教育孩子當(dāng)孩子犯錯(cuò)時(shí),家長會(huì)沉不住氣因此而情緒暴躁地打罵孩子。俗話說:“不要在沖動(dòng)時(shí)做出任何決定及舉...
    裸奔的石頭閱讀 190評(píng)論 0 0
  • 程序不在大小,下面是自己寫的一個(gè)模擬紅綠燈的程序首先我們先確定功能:1.要有顯示燈時(shí)間的地方2.燈在剩余時(shí)間只有十...
    sunout閱讀 306評(píng)論 0 2

友情鏈接更多精彩內(nèi)容