描述求无限整数序列1,2,3,4,5,6,7,8,9,10,11,...的第n位,...注:n为正数,将拟合32位有符号整数范围内(n<231)。例1:输入:3输出:3例2:输入:11输出:0解释:序列1、2、3、4、5、6的第11位,7,8,9,10,11,...是一个0,它是数字10的一部分。描述在无穷数列的整数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的一部分。来源:LeetCode链接:https://leetcode-cn.com/probl...版权属于LeetCode网络。商业转载请联系官方授权,非商业转载请注明出处。有9(1-9)个数字的1位数字;90(10-99)有2个数字;900(100-999)三位数;我们首先确定n对应的数字应该有多少位数,假设确定n对应的位数为t;然后我们确定n在所有具有t个数字的数字中的位置p;t位数字的第一个数字x,则通过x、p、t,可以确定题意;#-*-编码:utf-8-*-#@作者:何睿#@创建日期:2019-09-0207:41:16#@最后修改者:何睿#@最后修改时间:2019-09-0207:55:03class解决方案:deffindNthDigit(self,n:int)->int:a,b,start=self.__find_index(n)returnstr(start+a-1)[-1]ifnotbelsestr(start+a)[b-1]def__find_index(self,n:int)->(int,int,int):#cnt_digit:digitoccupiedDigits#cnt_zone:cnt_digit位数的数字个数#start:第一个带有cnt_digit数字的数字cnt_digit,cnt_zone,start=1,9,1whilen>cnt_zone*cnt_digit:#cnt_zoneconsumedTotaldigitsn-=cnt_zone*cnt_digitcnt_digit+=1cnt_zone*=10start*=10a,b=divmod(n,cnt_digit)returna,b,start源代码文件在这里。·?
