101 計算各個位數不同的數字個數

2021-09-21 18:53:34 字數 615 閱讀 8488

題目描述:

給定乙個非負整數 n,計算各位數字都不同的數字 x 的個數,其中 0 ≤ x < 10n 。

示例:輸入: 2

輸出: 91

解釋: 答案應為除去 11,22,33,44,55,66,77,88,99 外,在 [0,100) 區間內的所有數字。

思路:一開始傻乎乎的打算使用遞迴來計算每個位數的個數,當然肯定超時啦,後來看了提示,發現如果n大於10那麼將n當作10使用,並且從1開始0不影響放在後面的影響,比如1時有0-9共10中,但是如果為2,你在之前的0-9這十個數字後面放時,你需要考慮的是在0後面放重複,但是除了這個其餘就沒什麼了,因此將特殊情況列出來就可以了,**如下,也是一種類動態規劃吧

**:

class solution 

if(n == 1)

dp[0] = 1;

dp[1] = 10;

dp[2] = 81;

if(n >= 10)

for (int i = 3; i <= n; i++)

int result = 0;

for (int i : dp)

return result - 1;

}}

計算各個位數不同的數字個數

題目 給定乙個非負整數 n,計算各位數字都不同的數字 x 的個數,其中 0 x 10 n 1.首先想到的是暴力版本 從0開始遍歷到 10 n,判斷每個數字的每一位是否被重複,沒有則計數 1 顯然這種方法遇到大量資料時,會超時。時間複雜度 o 10 n param n return var count...

357 計算各個位數不同的數字個數

給定乙個非負整數 n,計算各位數字都不同的數字 x 的個數,其中 0 x 10n 示例 輸入 2 輸出 91 解釋 答案應為除去 11,22,33,44,55,66,77,88,99 外,在 0,100 區間內的所有數字。import j a.util.scanner class solution ...

T357 計算各個位數不同的數字個數

思想 找規律,每位上的數有10種選擇 0,9 而如何要求每位上的數字不同則必須保證n最大為10,因為只要n 10也就是11位所表示的數各位上的數一定有重複。f 0 1 f 1 10 f 2 9 9 f 1 而對於n n 10 位數,能組成的各位數字都不同的數字的個數f n 9 第一位也就是最高位不能...