題目:
在無限的整數序列 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...