剑指 Offer 44:如何查询数字序列特定位置的数字?

2026-04-29 20:482阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计314个文字,预计阅读时间需要2分钟。

剑指 Offer 44:如何查询数字序列特定位置的数字?

pythondef find_number_at_position(number_series, position): # 将数字序列转换为字符序列 char_series=''.join(str(digit) for digit in number_series) # 返回指定位置的字符对应的数字 return int(char_series[position - 1])

示例number_series=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]position=5result=find_number_at_position(number_series, position)print(result) # 输出 5

剑指 Offer 44:如何查询数字序列特定位置的数字?

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。

请写一个函数,求任意第n位对应的数字。

示例 1:

输入:n = 3 输出:3

示例 2:

输入:n = 11 输出:0


/* 数字范围 数量 位数 占多少位 1-9 9 1 9 10-99 90 2 180 100-999 900 3 2700 1000-9999 9000 4 36000 ... 例如 2901 = 9 + 180 + 2700 + 12 即一定是4位数,第12位 n = 12; 数据为 = 1000 + (12 - 1)/ 4 = 1000 + 2 = 1002 定位1002中的位置 = (n - 1) % 4 = 3 s.charAt(3) = 2; */ class Solution { public int findNthDigit(int n) { int digit = 1; // n所在数字的位数 long start = 1; // 数字范围开始的第一个数 long count = 9; // 占多少位 while(n > count){ n -= count; digit++; start *= 10; count = digit * start * 9; } long num = start + (n - 1) / digit; return Long.toString(num).charAt((n - 1) % digit) - '0'; } }

标签:数字

本文共计314个文字,预计阅读时间需要2分钟。

剑指 Offer 44:如何查询数字序列特定位置的数字?

pythondef find_number_at_position(number_series, position): # 将数字序列转换为字符序列 char_series=''.join(str(digit) for digit in number_series) # 返回指定位置的字符对应的数字 return int(char_series[position - 1])

示例number_series=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]position=5result=find_number_at_position(number_series, position)print(result) # 输出 5

剑指 Offer 44:如何查询数字序列特定位置的数字?

数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。

请写一个函数,求任意第n位对应的数字。

示例 1:

输入:n = 3 输出:3

示例 2:

输入:n = 11 输出:0


/* 数字范围 数量 位数 占多少位 1-9 9 1 9 10-99 90 2 180 100-999 900 3 2700 1000-9999 9000 4 36000 ... 例如 2901 = 9 + 180 + 2700 + 12 即一定是4位数,第12位 n = 12; 数据为 = 1000 + (12 - 1)/ 4 = 1000 + 2 = 1002 定位1002中的位置 = (n - 1) % 4 = 3 s.charAt(3) = 2; */ class Solution { public int findNthDigit(int n) { int digit = 1; // n所在数字的位数 long start = 1; // 数字范围开始的第一个数 long count = 9; // 占多少位 while(n > count){ n -= count; digit++; start *= 10; count = digit * start * 9; } long num = start + (n - 1) / digit; return Long.toString(num).charAt((n - 1) % digit) - '0'; } }

标签:数字