在无限的整数序列 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的一部分。
题目标签:Math
题目链接:LeetCode / LeetCode中国
Language | Runtime | Memory |
---|---|---|
python3 | 36 ms | N/A |
class Solution:
def findNthDigit(self, n):
"""
:type n: int
:rtype: int
"""
digs = 0
while True:
digs += 1
if n <= digs * (10**digs - 10**(digs-1)):
break
base = 10 ** (digs-1)
surplus = n - sum((9 * 10 ** d * (d+1) for d in range(digs-1))) - 1
return int(str(surplus//digs+base)[surplus%digs])