# 357. 统计各位数字都不同的数字个数 [Medium] 给你一个整数 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 ``` 寫下前幾個,就能看出規律了。 n=1: res=10 n=2: res=9*9+10=91 # 兩位數第一位只能為1-9,第二位只能為非第一位的數,加上一位數的所有結果 n=3: res=9 * 9 * 8+91=739 # 三位數第一位只能為1-9,第二位只能為非第一位的數,第三位只能為非前兩位的數,加上兩位數的所有結果 n=4: res=9 * 9 * 8 * 7+739=5275 # 同上推法 因此,代碼如下 ```java= class Solution { public int countNumbersWithUniqueDigits(int n) { if( n==0) return 1; if (n == 1) return 10; int res = 10; for(int i =1, mul = 9;i<n;i++){ mul *= (10-i); res += mul; } return res; } } ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up