声明:
今天是第87道题。在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。以下所有代码经过楼主验证都能在LeetCode上执行成功,代码也是借鉴别人的,在文末会附上参考的博客链接,如果侵犯了博主的相关权益,请联系我删除
(手动比心ღ( ´・ᴗ・` ))
正文
题目:在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字。
注意:n 是正数且在整型范围内 ( n < 2^31)。
示例 1:
输入: 3 输出: 3
示例 2:
输入: 11 输出: 0 说明: 第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ... 里是0,它是10的一部分。
解法1。通过统计发现,1位数有9个,2位数有90个,3位数有900个,…,所以先用一个循环找出n所在的区间,然后解析出是哪一位数字,代码如下。
执行用时: 24 ms, 在Nth Digit的Python提交中击败了98.20% 的用户
class Solution(object):
def findNthDigit(self, n):
"""
:type n: int
:rtype: int
"""
digits = 1
base = 9
ith = 1
while n > base*digits:
n -= base*digits
digits += 1
ith += base
base *= 10
# ith+(n-1)/digits表示的是数,[(n-1)%digits]表示的是该数字的第几位
return int(str(ith + (n-1)/digits)[(n-1)%digits])
结尾
解法1:https://blog.csdn.net/liuxiao214/article/details/77949837