算法题:Leetcode 400题解:Python + list + 找出第N个数字

  1. 第N个数字
    在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …中找到第 n 个数字。

注意:
n 是正数且在32位整数范围内 ( n < 2^31)。

示例 1:

输入:
3

输出:
3
示例 2:

输入:
11

输出:
0

说明:
第11个数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 里是0,它是10的一部分。


今天下午闲了一下,找个leetcode练手一下,
本题思路主要是先找出规律:
一到9不用说,10-99就是 100个数,看作一个整体的话是100,但是是是两位数,所以是2910,3位数以此类推

1…9, | 10…99, | 100…999, | 1000…9999…

1x9x10^0,| 2x9x10^1, | 3x9x10^2 , | 4x9x10^3…

搞清楚思路后,就可以开始码字了:
代码如下,不在家 所以拍下来的。。。见谅
在这里插入图片描述
:第1000个数字为 3

1000 -9 - 2*90 = 811

811/3 = 270 还多余一个1,所以需要取下一个数字的第一位数字,

所以数为100 + 270 -1+1=370
将数分解为[ 3,7,0],可以转为列表list, 先转为str
取值后:

由于是第一个数字 3,

测试结果也是3!其他数字也测试如此。。。以此作为记录。

没贴上代码,有空补上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值