LeetCode刷題值400Python第N個數字

2021-08-25 08:15:58 字數 1161 閱讀 1827

題目:

在無限的整數序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 個數字。

注意:

n 是正數且在32為整形範圍內 ( n

< 231)。

示例 1:

輸入:

3輸出:

3

示例 2:

輸入:

11輸出:

0說明:

第11個數字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 裡是0,它是10的一部分。

這道題就是要找規律。

個位數:1-9,一共9個,共計9個數字

2位數:10-99,一共90個,共計180個數字

3位數:100-999,一共900個,共計270個數字

4位數,1000-9999,一共9000個,共計36000個數字  36000=4*9*10**(4-1)

......

class solution(object):

def findnthdigit(self, n):

""":type n: int

:rtype: int

"""#第一步確定n是在幾位數里,第二步是確定在幾位數的第幾位數字的第幾位

#第一步

digit=1#位數

while n>digit*9*10**(digit-1):

n-=digit*9*10**(digit-1)#減去該位數的數字數目再算下一位

digit+=1

#第二步,這時的n已經是從這個幾位數的開頭開始的n了

a=int((n-1)/digit)#得到幾位數的第幾位數字,序號從0開始,所以是(n-1)

b=int((n-1)%digit)#得到幾位數的第幾位數字的第幾位

num=10**(digit-1)+a#得到第幾位數字是多少

res=list(str(num))[b:b+1]#數字轉字元再轉列表把第幾位數的第幾位切出來

return int(''.join(res))#列表轉字元再轉數字

開始刷題LeetCode

今天決定開始刷題,每天至少一題,如果題目確實沒有解決出來沒有關係,但是要保證每天至少接觸了一道新的題目!一定要堅持下去,現在是個菜鳥可能會感覺有點難度,堅持下去,總有一天會好的!今天是第一天,做的第乙個題目 reverse words in a string given an input strin...

leetcode刷題歷程

難度 簡單 題目 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target 9 因為 nums 0 ...

LeetCode刷題總結

123 4567 891011 12 元素交換 swap a 1 a 3 sort排序 sort a.begin a.end 陣列顛倒 reverse a.begin a.end 陣列元素置為0 memset a,0,a.size 陣列取值 a.push back 定義二維陣列 vector vec...