题⽬描述

数字以 0123456789101112131415… 的格式作为⼀个字符序列,在这个序列中第 2 位(从下标 0 开始计算)是 2,第 10 位是 1,第 13 位是 1,以此类题,请你输出第 n 位对应的数字。

示例1

输⼊:0 返回值:0

示例2 输⼊:2 返回值:2

示例3 输⼊:13 返回值:1

思路及解答

暴力法

通过逐步构造数字序列来找到第n位数字

  • 时间复杂度:O(n),需要构造长度至少为n的字符串

  • 空间复杂度:O(n),需要存储构造的字符串序列

数学规律

利用数字位数分布的数学规律,直接定位第n位所在的数字和具体位置

数字位数分布规律:

  • 1位数:0-9 → 10个数字 × 1位 = 10位

  • 2位数:10-99 → 90个数字 × 2位 = 180位

  • 3位数:100-999 → 900个数字 × 3位 = 2700位

  • k位数:9×10ᵏ⁻¹个数字 × k位

  • 时间复杂度:O(log₁₀n),循环次数与n的位数成正比

  • 空间复杂度:O(1),只使用常数级别变量

添0补齐

假设所有数字都是i位数,通过给较短数字前面添0,使所有数字位数相同,简化定位逻辑

  • 时间复杂度:O(log₁₀n),与数学规律法相同

  • 空间复杂度:O(1),常数空间复杂度