题解 | #数字序列中某一位的数字#

数字序列中某一位的数字

http://www.nowcoder.com/practice/29311ff7404d44e0b07077f4201418f5

根据规律计算; 由于数字按照顺序排列: 0,1,2,3,4,5,6,7,8,9 10 ** 1 以内, 步长(位数)为 1 10, 11, 12 ... 99, 10 ** 2 以内,步长为2 100, 101, ... 999, 10 ** 3 以内,步长为3 ... 则设置当前值为 base = 0 n 所在的位置应该在 (base, base + (10 ** step - 10 ** (step - 1)) * step) 之间, n 比累加 base 多了 k = n - base, n 前一个最大的位数为 last = 10 ** (step - 1), n 位所处的数字应在 digit = last + k // step 第 n 位的数字为 digit[k % step]

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param n int整型 
# @return int整型
#
class Solution:
    def findNthDigit(self , n: int) -> int:
        # write code here
        if n < 10: return n
        base = 0 
        step = 1
        while not base < n < base + (10 ** step - 10 ** (step - 1)) * step:
            base += (10 ** step - 10 ** (step - 1)) * step
            step += 1
        k = n - base - 1
        digit = 10 ** (step - 1) + k // step
        return int(str(digit)[k % step])
全部评论

相关推荐

12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
牛客78682892...:直接点还好,总比要了简历也不回的强
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务