文章目錄
- 題目描述:
- 思路分析:
- 完整代碼:
題目描述:
給你一個整數 n ,請你在無限的整數序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并傳回第 n 位上的數字。
示例 1:
輸入:n = 3
輸出:3
示例 2:
輸入:n = 11
輸出:0
解釋:第 11 位數字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 裡是 0 ,它是 10 的一部分。
思路分析:
這道題暴力過不去啊~ 我上來直接用的暴力,從0開始數,這道題的數量級非常大
1 <= n <= 231 - 1
暴力直接逾時了。
完整代碼:
class Solution:
def findNthDigit(self, n: int) -> int:
base = 9
base_wei = 1 # 表示位數
while n > base_wei * base:
n -= base * base_wei
base *= 10
base_wei +=1
n -=1
temp = n //base_wei
# 數字
num = 10 ** (base_wei-1) + temp
# 看看要的是該數字的第幾位
index_num = n % base_wei
return int(str(num)[index_num])