Leetcode 剑指 Offer II 163. 找到第 k 位数字
题目难度: 中等原题链接今天继续更新 Leetcode 的剑指 Offer专项突击版系列, 大家在公众号算法精选里回复剑指offer2就能看到该系列当前连载的所有文章了, 记得关注哦~题目描述某班级学号记录系统发生错乱原整数学号序列 [1,2,3,4,…] 分隔符丢失后变为 1234… 的字符序列。请实现一个函数返回该字符序列中的第 k 位数字。示例 1输入k 5输出5示例 2输入k 12输出1解释第 12 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, … 里是 1 它是 11 的一部分。提示0 k 2^31题目思考能否找到什么规律?解决方案思路观察序列本身:0~9 只占 1 位, 共 10 个10~99 占 2 位, 共 90 个100~999 占 3 位, 共 900 个1000~9999 占 4 位, 共 9000 个…为了保持一致, 我们可以将 1 位的时候改成从 1 开始, 把 k0 作为特殊情况, 这样 1 位也只有 9 个, 即 1~9这样我们就很容易发现规律, 假设当前位数是 le:每一位的开始值 start 是pow(10, le-1)每一位的数字数目是9*start每一位的字符总数则是9*start*le(因为每个数字有 le 个字符)所以我们可以逐渐增加位数, 统计当前总共的字符个数假设 le 位数下的字符总数是 cnt, le1 下的字符总数是 nextcnt, 那么如果 k 在[cnt, nextcnt)范围内, 那就说明 k 落在的数字一定有 le 位这样一来, 我们只需要定位 k 具体对应到的数字, 以及所在数字的第几位即可而由于每个数字占有 le 位, 所以 k 对应的数字就是start(k-cnt)/le, 而具体 k 是在该数字的第几位, 则是(k-cnt)%le下面的代码对必要步骤有详细的解释, 方便大家理解复杂度时间复杂度O(logN)只需要按位数遍历即可, k 的位数是 logN空间复杂度O(1)只使用了常数个变量代码classSolution:deffindKthNumber(self,k:int)-int:ifk0:return0# 初始化计数值为1, 因为start最开始是1, 此时已经有1个字符了cnt1# 初始化位数为1位le1whilekcnt:# 求当前位数下的startstart10**(le-1)# 求当前位数1情况下的字符总数nexcntcnt9*start*leifknexcnt:# 当前n落在范围内, 找对应的数字和该数字中n对应的位(偏移量)i,offsetdivmod(k-cnt,le)numstarti# 将数字转成字符串, 其偏移量下标对应的位即为所求returnint(str(num)[offset])# 更新字符总数, 同时位数加1, 继续循环cntnexcnt le1大家可以在下面这些地方找到我~我的 GitHub我的 Leetcode我的 CSDN我的知乎专栏我的头条号我的牛客网博客我的公众号: 算法精选, 欢迎大家扫码关注~

相关新闻

Java高频面试题:Redis的Key和Value的设计原则有哪些?

Java高频面试题:Redis的Key和Value的设计原则有哪些?

大家好,我是锋哥。今天分享关于【Redis的Key和Value的设计原则有哪些?】面试题。希望对大家有帮助;Redis的Key和Value的设计原则有哪些?在设计 Redis 的 Key 和 Value 时,遵循一些基本的原则可以帮助提高性能、可扩展性和维护性。以下是一些…

2026/7/3 4:58:29 阅读更多 →
动态量化机制:基于流量负载的精度与速度自适应切换

动态量化机制:基于流量负载的精度与速度自适应切换

在 DeepSeek 大模型的昇腾适配过程中,基于流量负载的精度与速度自适应切换是一个无法回避的关键议题。 很多工程师会遭遇这样的困境:理论上可行的方案,在实际落地时却频频碰壁;文档中的示例代码,运行起来却报错连连。这…

2026/5/17 7:56:35 阅读更多 →
OpenClaw中Channel 和 Plugin的关系

OpenClaw中Channel 和 Plugin的关系

Channel 和 Plugin 是包含关系:Channel 是 Plugin 的一种特殊类型,每个 Channel 必须通过 Plugin 的 register() 方法向系统注册后才能运行。核心关系:Channel ⊂ Plugin OpenClawPluginDefinition(Plugin 插件定义)↓…

2026/5/17 10:27:22 阅读更多 →

最新新闻

基于STM32的智能手环设计与实现

基于STM32的智能手环设计与实现

摘要:为满足对人体基础生理信息与日常活动状态的综合监测需求,设计了一套基于STM32的智能手环系统。系统以STM32F103C8T6为控制核心,结合MAX30102心率血氧传感器、DS18B20温度传感器、ADXL345加速度传感器、OLED显示屏、按键、蜂鸣器及ESP826…

2026/7/3 4:57:19 阅读更多 →
2026 年 7 月 openclaw 龙虾替代品推荐 九款分场景商用AI智能体实测对比参考

2026 年 7 月 openclaw 龙虾替代品推荐 九款分场景商用AI智能体实测对比参考

前言 OpenClaw 俗称龙虾,作为海外开源 AI 智能体框架,依托自主操控电脑、多技能扩展的能力积累不少使用者,但原版工具存在部署流程繁琐、国内网络适配度有限、数据跨境存在合规压力、中文长任务运行稳定性一般等现实使用门槛。2026 年国内市场…

2026/7/3 4:57:19 阅读更多 →
JVM 全套面试题整理(由简到难,2026最新完整版)

JVM 全套面试题整理(由简到难,2026最新完整版)

很多同学面试 JVM 很痛苦:知识点杂乱、背了不会用、面试问深一点就崩。本文按照 入门基础 → 内存模型 → GC 垃圾回收 → 类加载机制 → 底层原理 → 线上调优与故障排查 难度逐级递增整理,可直接背诵、可直接口述、可解决线上问题。 适合:J…

2026/7/3 4:53:18 阅读更多 →
生产级机器学习服务架构:特征仓库、模型注册与可观测性实战

生产级机器学习服务架构:特征仓库、模型注册与可观测性实战

1. 项目概述:这不是“部署”,是让模型真正活在业务流水线里“From Notebook to Production: Running ML in the Real World (Part 4)”——光看标题,你可能以为这是系列教程的收尾篇,讲讲怎么把Jupyter里跑通的模型丢进Docker、打…

2026/7/3 4:51:17 阅读更多 →
Python基础数据结构详解

Python基础数据结构详解

Python基础数据结构详解:从字符串到字典的全面指南 Python作为一门简洁高效的编程语言,其内置的数据结构为日常编程提供了强大的支持。本文将深入探讨Python中最常用的几种基础数据结构:字符串(str)、列表(…

2026/7/3 4:49:16 阅读更多 →
销售预测实战:用时间序列分解与SARIMAX提升准确率

销售预测实战:用时间序列分解与SARIMAX提升准确率

1. 项目概述:为什么销售预测不能只靠“拍脑袋”,而必须深挖时间序列的底层逻辑做销售预测这件事,我干了快十二年,从最早拿Excel拉移动平均线,到后来用Python写完整pipeline跑SARIMA,再到如今在生产环境里维…

2026/7/3 4:47:15 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻