美文网首页
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个数字

    剑指Offer 44:数字序列中某一位的数字 Leetcode 400. Nth Digit 先想了一个蠢办法,一...

  • 常见笔试

    杨辉三角 第n行有n个数字. 每一行的开始和结尾数字都为1. 第n+1行的第i个数字等于第n行的i-1个数字加上第...

  • 剑指offer 70- 圆圈中最后剩下的数字

    0,1,…,n−1 这 n 个数字 (n>0) 排成一个圆圈,从数字 0 开始每次从这个圆圈里删除第 m个数字。 ...

  • 【剑指 offer】圆圈中最后剩下的数字。(约瑟夫问题)

    1、题目描述 0, 1, …, n-1这n个数字(n>0)排成一个圆圈,从数字0开始每次从这个圆圈里删除第m个数字...

  • 圆圈中最后剩下的数字

    题目:0, 1, … , n-1 这 n 个数字排成一个圈圈,从数字 0 开始每次从圆圏里删除第 m 个数字。求出...

  • 前端css nth-child

    /* 选择第n个,n位数字 */:nth-child(n) 选择列表中的偶数标签:nth-child(2n) 选...

  • 面试题62:圆圈中最后剩下的数字

    题目 0,1,.......,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个...

  • 笔试题整理(六)

    去哪儿 一、打印n*n的螺旋矩阵的第i行,第j列的数字。例如4*4的矩阵第3行第3列的数字为15。

  • 圆圈中最后剩下的数

    题目描述 0,1,……,n - 1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆...

  • 阿里面试算法题合集一

    62. 圆圈中最后剩下的数字 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字...

网友评论

      本文标题:DAY8 第n个数字

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