当前位置: 首页 > news >正文

[LeetCode][400]第 N 位数字

题目

400. 第 N 位数字

给你一个整数 n ,请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …] 中找出并返回第 n 位上的数字。

  • 示例 1:

输入:n = 3
输出:3

  • 示例 2:

输入:n = 11
输出:0
解释:第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 里是 0 ,它是 10 的一部分。

  • 提示:
    节点总数 <= 10000

解法

  1. 由题目可知,一位数占用一位,两位数占用俩位,以此类推,我们需要得知 n 是在几位数上的,所以用 n 减去前面位数占用的位数的总和(一位数1-9共9位,二位数10-99共90×2=180位…)
  2. 确定数字所在位数之后,确定 n 所在的实际数字究竟是哪个
  3. 确定实际位数后,最后一步是确定所找数字在实际数字的第几位

class Solution {
public:int findNthDigit(int n) {int numDigits = 1; // 初始化数字位数long long int numCount = 9; // 当前数字位数所包含的数字个数// 确定给定数字所在的位数while (n - numCount * numDigits > 0) {n -= numCount * numDigits;numDigits++;numCount *= 10;}// 确定实际数字int num = pow(10, numDigits - 1) + (n - 1) / numDigits;// 确定所找数字的位数int digitIndex = (n - 1) % numDigits;// 将数字转换为字符串并获取指定位上的数字std::string numStr = std::to_string(num);return numStr[digitIndex] - '0';}
};
http://www.lryc.cn/news/328498.html

相关文章:

  • clickhouse 查询group 分组最大值的一行数据。
  • Python装饰器与生成器:从原理到实践
  • python-函数引入模块面向对象编程创建类继承
  • Spring:面试八股
  • Flask Python:请求上下文和应用上下文
  • 哔哩哔哩直播姬有线投屏教程
  • 您现在可以在家训练 70b 语言模型
  • 算法题剪格子使我重视起了编程命名习惯
  • P19:注释
  • python习题小练习(挑战全对)
  • 大数据学习-2024/3/30-MySQL基本语法使用介绍实例
  • C#_事件_多线程(基础)
  • vue 通过插槽来分配内容
  • YOLO图像前处理及格式转换
  • ES6 学习(二)-- 字符串/数组/对象/函数扩展
  • 《VMamba》论文笔记
  • 手机真机连接USB调试adb不识别不显示和TCPIP连接问题
  • MySQL分表后,如何做分页查询?
  • 【Deep Learning 11】Graph Neural Network
  • http和https的工作原理是什么?
  • STL中容器、算法、迭代器
  • 深入并广泛了解Redis常见的缓存使用问题
  • nginx界面管理工具之nginxWebUI 搭建与使用
  • linux下 罗技鼠标睡眠唤醒问题的解决
  • 架构师之路--Docker的技术学习路径
  • 【动手学深度学习-pytorch】 9.4 双向循环神经网络
  • 网际协议 - IP
  • DC-9靶场
  • 自定义类型(二)结构体位段,联合体,枚举
  • MySQL5.7源码分析--解析