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

剑指offer40_数字序列中某一位的数字

数字序列中某一位的数字


数字以 0123456789101112131415… 的格式序列化到一个字符序列中。

在这个序列中,第 5 位(从 0 开始计数)是 5,第 13 位是 1,第 19 位是 4,等等。

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

数据范围

0≤ 输入数字 ≤2147483647

样例
输入:13输出:1

算法思路

该算法用于解决数字序列的第n位问题(序列格式:123456789101112131415...),核心分为两步:

  1. 定位数字所在的区间
    • 确定第n位对应的数字是几位数(i位)。
    • 通过逐步减去i位数的总位数(i * s),缩小n的范围。
    • base表示当前i位数的最小值(如i=3base=100)。
  2. 提取具体数字的某一位
    • 计算目标数字numberbase + (n + i - 1) / i - 1
    • 确定number中的第r位(通过取模和除法操作)。
维度说明
时间复杂度 O ( log ⁡ 10 n ) O(\log_{10} n) O(log10n)最多循环 log ⁡ 10 n \log_{10}n log10n次(数字位数增长)
空间复杂度 O ( 1 ) O(1) O(1)仅用常数变量,无额外空间

class Solution {
public:int digitAtIndex(int n) {/*对于n来说:i:是个几位数;s:该位数有多少个;base:该位数的起始数字;*/long long i = 1, s = 9, base = 1;while(n > i * s){n -= n * s;i ++;s *= 10;base *= 10;}//是几位数的第几个数,那个数就是numberint number = base + (n + i - 1) / i - 1;//是那个数的几分位,n%i=0 表示是最后一位个位;int r = n % i ? n % i : i;for(int j = 0; j < i - r; j ++) number /= 10;return number % 10;}
};
http://www.lryc.cn/news/574116.html

相关文章:

  • 中国风国潮通用PPT模版
  • 【项目管理】项目管理资料文档模板(ZIP,PPT,WORD)
  • 榕壹云无人售货机管理系统:开源架构赋能私有化部署,打造智能零售技术解决方案
  • AI 领航设计模式学习:飞算 JavaAI 解锁单例模式实践新路径
  • 在测试中,如何判断是前端 Bug 还是后端 Bug?
  • 错误: 程序包androidx.fragment.app不存在 import android
  • 实现 el-table 中键盘方向键导航功能vue2+vue3(类似 Excel)
  • Flutter ListTile 徽章宽度自适应的真正原因与最佳实践
  • iOS 为图片添加水印
  • 基于openfeign拦截器RequestInterceptor实现的微服务之间的夹带转发
  • react快速开始项目模板
  • Web基础 -SpringBoot入门 -HTTP-分层解耦 -三层架构
  • Protobuf 深度解析:从基础语法到高级应用
  • 【目标检测】图像处理基础:像素、分辨率与图像格式解析
  • “自动化失败归因”测试集-WhoWhen
  • 在大数据求职面试中如何回答分布式协调与数据挖掘问题
  • 云原生 CAD 让制造业设计协同更便捷
  • 3D模式格式转换工具HOOPS Exchange如何将3D PDF转换为STEP格式?
  • 【实时Linux实战系列】使用定时器实现定时任务
  • 计算机网络:(六)超详细讲解数据链路层 (附带图谱表格更好对比理解)
  • docker镜像中集成act工具
  • 刀客doc:阿里巴巴集团品牌部划归集团公关管理
  • Java基础(三):逻辑运算符详解
  • P3258 [JLOI2014] 松鼠的新家
  • (LeetCode 面试经典 150 题) 27.移除元素
  • PR出书启动
  • ✨通义万相2.1深度解析:AI视频生成引擎FLF2V-14B全流程指南(命令行参数+模型架构+数据流)
  • VTK.js
  • 容声冰箱如何让荔枝在世俱杯赛场外再“长7天”
  • Elasticsearch API访问权限控制:禁用外部端点访问