美文网首页
DAY8 第n个数字

DAY8 第n个数字

作者: 神游物外的轮子 | 来源:发表于2020-05-16 14:25 被阅读0次

    剑指Offer 44:数字序列中某一位的数字

    Leetcode 400. Nth Digit

    先想了一个蠢办法,一个个数过去,果然超时了,代码见最后
    优化一下,依次判断是否在0-9,10-99,100-999等等,判断出范围在进行偏移量计算,解法如下:

    class Solution:
        def findNthDigit(self, n: int) -> int:
            def f(x):
                return  10 ** (x - 1) * x * 9
            
            if n <= 9:
                return n
            n -= 9
            digit = 2
            while n - f(digit) > 0:
                n -= f(digit)
                digit += 1
            x, y = n // digit, n % digit
            if y == 0:
                return (10 ** (digit - 1) + x - 1) % 10
            
            return ((10 ** (digit - 1) + x) // 10 ** (digit - y)) % 10
    

    暴力法,超时了

    class Solution:
        def findNthDigit(self, n: int) -> int:
            import math
            m = -1
            for i in range(n + 2):
                m += len(str(i))
                if m == n:
                    return int(i % 10)
                elif m > n:
                    break
            t = m - n
            return int((i // math.pow(10, t)) % 10)
    
    

    相关文章

      网友评论

          本文标题:DAY8 第n个数字

          本文链接:https://www.haomeiwen.com/subject/juofohtx.html