Leetcode 剑指 Offer II 162. 数字 1 的个数
题目难度: 困难原题链接今天继续更新 Leetcode 的剑指 Offer专项突击版系列, 大家在公众号算法精选里回复剑指offer2就能看到该系列当前连载的所有文章了, 记得关注哦~题目描述给定一个整数 num计算所有小于等于 num 的非负整数中数字 1 出现的个数。示例 1输入num 0输出0示例 2输入num 13输出6提示0 num 109题目思考可否单独统计每一位上的 1?解决方案思路一个最简单的思路是从 1 到 num 依次遍历, 然后统计各个数字的 1 的数目并累加, 但观察题目数据规模, 最大都到了 2^31, 这个做法肯定会超时换个思路, 如果我们可以单独统计每一位上的 1 在多少个数中存在, 这样只需要遍历所有位数并累加结果即可举个例子, 假如num 12x45, 现在要统计1~12x45在第 x 位上 1 的数目, 显然这里分为三种情况:x 1: 此时要想这一位上有 1, 那么前两位的范围只能是 0~11, 而后两位的范围则可以是 0~99, 也即00100, 00101, ..., 11199这么多种可能性, 只考虑该位上的 1, 那么它的数目就是左右取值范围的乘积, 也即12*100x 1: 此时显然仍包含第一种情况中的可能性, 但它有额外的部分, 也即前两位是 12, 然后后面的范围是 0~45, 加起来就是12*100 1*46个 1x 1: 此时仍包含第一种情况中的可能性, 但对于前两位是 12 来说, 后面的取值范围就是 0~99 了, 因为12199 12x45, 所以加起来就是12*100 1*100个 1综合这三种情况, 就能够计算出每一位上的 1 的数目, 最后累加起来就是总的 1 的数目注意x 1的数目是所有情况下共享的, 所以可以先计算出这一部分, 然后针对x 1和x 1再额外计算剩余部分, 从而减少代码冗余下面的代码对必要步骤有详细的解释, 方便大家理解复杂度时间复杂度O(logN)只需要遍历 num 的每一位, 总位数是 logN空间复杂度O(1)不需要额外空间代码classSolution:defdigitOneInNumber(self,num:int)-int:# 对每一位进行判断, 左右相乘, 分大于等于小于1三种情况res0# 将数字先转成字符串, 方便对每一位的处理sstr(num)fori,xinenumerate(s):# 对应x1时的左边部分的取值范围# 注意对于最高位而言, 它的左边部分为0, 这是因为最高位不可能小于1, 所以这部分不应该有left0ifi0elseint(s[0:i])# 对应x1时的右边部分的取值范围right10**(len(s)-i-1)ifx1:# 当x1时, 直接加上分析的左右部分乘积即可resleft*rightelifx1:# 当x1时, 需要额外加上右边的计数, 对于例子12x45 (x1)来说, 就是46# 注意如果此时是最低位, 那么额外只有1种可能, 就是上限n本身, 所以最低位1的话只需要加上1extra1ifilen(s)-1elseint(s[i1:])1resleft*rightextraelse:# 当x1时, 需要额外加上1*rightres(left1)*rightreturnres大家可以在下面这些地方找到我~我的 GitHub我的 Leetcode我的 CSDN我的知乎专栏我的头条号我的牛客网博客我的公众号: 算法精选, 欢迎大家扫码关注~

相关新闻

YOLOv13涨点改进| TGRS 2026 | 独家创新首发、特征融合改进篇| 引入GSFM 全局语义感知融合模块,突出小目标并抑制复杂背景干扰,适合小目标检测、红外小目标检测、小目标分割,高效涨点

YOLOv13涨点改进| TGRS 2026 | 独家创新首发、特征融合改进篇| 引入GSFM 全局语义感知融合模块,突出小目标并抑制复杂背景干扰,适合小目标检测、红外小目标检测、小目标分割,高效涨点

一、本文介绍 🔥本文给大家介绍利用GSFM 全局语义感知融合模块改进YOLOv13网络模型,可以在高层特征阶段增强全局语义建模能力,使网络在更大范围内建立特征依赖关系,从整体背景分布中重新评估局部响应强度,从而突出小目标并抑制复杂背景干扰。该模块通过全局上下文引导的…

2026/5/17 7:23:30 阅读更多 →
金管局计算机岗考试内容全解析:9000+字深度拆解技术、金融与政策三大维度

金管局计算机岗考试内容全解析:9000+字深度拆解技术、金融与政策三大维度

金管局计算机岗考试内容全解析:9000字深度拆解技术、金融与政策三大维度作者:培风图南以星河揽胜 平台:CSDN 发布时间:2026年3月1日 适用人群:计算机科学与技术、软件工程、信息安全、人工智能、大数据等相关专业应届毕…

2026/7/5 12:13:34 阅读更多 →
金管局计算机岗计算机专业知识100题(附详解):覆盖数据库、网络、安全、新兴技术四大核心模块

金管局计算机岗计算机专业知识100题(附详解):覆盖数据库、网络、安全、新兴技术四大核心模块

金管局计算机岗计算机专业知识100题(附详解):覆盖数据库、网络、安全、新兴技术四大核心模块作者:培风图南以星河揽胜 平台:CSDN 发布时间:2026年3月1日 适用人群:报考国家金融监督管理总局&…

2026/5/17 7:23:29 阅读更多 →

最新新闻

OneNote专业迁移指南:终极免费工具助你无损转换到Markdown

OneNote专业迁移指南:终极免费工具助你无损转换到Markdown

OneNote专业迁移指南:终极免费工具助你无损转换到Markdown 【免费下载链接】onenote-md-exporter ConsoleApp to export OneNote notebooks to Markdown formats 项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter 你是否厌倦了微软OneNote的…

2026/7/5 14:42:23 阅读更多 →
Text-to-CAD革命:用自然语言重构机械设计工作流

Text-to-CAD革命:用自然语言重构机械设计工作流

Text-to-CAD革命:用自然语言重构机械设计工作流 【免费下载链接】text-to-cad-ui A lightweight UI for interacting with the Zoo Text-to-CAD API. 项目地址: https://gitcode.com/gh_mirrors/te/text-to-cad-ui 传统机械设计流程中,工程师需要…

2026/7/5 14:38:22 阅读更多 →
GIF图像使用的压缩算法是LZW(Lempel-Ziv-Welch)算法

GIF图像使用的压缩算法是LZW(Lempel-Ziv-Welch)算法

GIF图像使用的压缩算法是LZW(Lempel-Ziv-Welch)算法。这是一种无损数据压缩算法,专为重复模式较多的图像(如图形、图标、文字等)设计,适用于GIF格式的8位调色板图像。LZW在GIF规范(GIF87a和GIF8…

2026/7/5 14:38:22 阅读更多 →
Realtek RTL8125 2.5GbE网卡驱动:DKMS安装与优化完整指南

Realtek RTL8125 2.5GbE网卡驱动:DKMS安装与优化完整指南

Realtek RTL8125 2.5GbE网卡驱动:DKMS安装与优化完整指南 【免费下载链接】realtek-r8125-dkms A DKMS package for easy use of Realtek r8125 driver, which supports 2.5 GbE. 项目地址: https://gitcode.com/gh_mirrors/re/realtek-r8125-dkms Realtek R…

2026/7/5 14:38:22 阅读更多 →
Python练习题002篇

Python练习题002篇

文章目录 模块一:布尔类型与比较运算符 练习题 模块二:基本if单分支选择结构 练习题 模块三:if-else双分支选择结构 练习题 模块四:逻辑运算符(and / or / not) 练习题 模块五:多重if(elif)多分支选择结构 练习题 模块六:嵌套if选择结构 练习题 综合练习题(侧重Linu…

2026/7/5 14:36:22 阅读更多 →
Blender UV编辑终极指南:UvSquares插件一键重塑UV网格

Blender UV编辑终极指南:UvSquares插件一键重塑UV网格

Blender UV编辑终极指南:UvSquares插件一键重塑UV网格 【免费下载链接】UvSquares Blender addon for reshaping UV quad selection into a grid. 项目地址: https://gitcode.com/gh_mirrors/uv/UvSquares 想要彻底告别繁琐的UV调整工作吗?UvSqua…

2026/7/5 14:32:21 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻