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

2021-10-24 08:32:41 字數 911 閱讀 4424

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

示例:

輸入: 2

輸出: 91 

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

計算各位數字都不同的數字x的個數,  初始看到題 有點懵, 沒審清楚題目;

方法1: 排列組合方法

n=0:  1

n=1:  10 (乙個位置, 10個數)

n=2: 9*9 

n=3:  9*9*8 (三位數時, 第一位數 可選數字 9個,去掉0, 第二位 9個(包括0了), 第三位8個)

n=4: 9*9*8*7

前n項和 即為結果

class solution:

def countnumberswithuniquedigits(self, n: int) -> int:

# 排列組合方法

if n==0:

return 1

if n == 1:

return 10

sum = 10

# sum = sum + 9*9 + 9*9*8 + 9*9*8*7

for i in range(2, n+1):

sum = sum + self.getvalue(i)

return sum

def getvalue(self, n):

# n >= 2

result = 9

for i in range(2, n+1):

result = result * (10 - (i - 1))

return result

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

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

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

題目描述 給定乙個非負整數 n,計算各位數字都不同的數字 x 的個數,其中 0 x 10n 示例 輸入 2 輸出 91 解釋 答案應為除去 11,22,33,44,55,66,77,88,99 外,在 0,100 區間內的所有數字。思路 一開始傻乎乎的打算使用遞迴來計算每個位數的個數,當然肯定超時啦...

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 ...