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

剑指 Offer 43. 1~n 整数中 1 出现的次数

摘要

剑指 Offer 43. 1~n 整数中 1 出现的次数

一、数学思维解析

将1~ n的个位、十位、百位、...的1出现次数相加,即为1出现的总次数。

设数字n是个x位数,记n的第i位为ni​,则可将n写为 nxnx−1⋯n2n1:

  • 称" ni" 为 当前位 ,记为 cur ,
  • 将" ni−1ni−2⋯n2n1​ " 称为 低位 ,记为low ;
  • 将" nxnx−1⋯ni+2ni+1​ " 称为高位 ,记为high 。
  • 将10i称为位因子 ,记为digit。

某位中1出现次数的计算方法:根据当前位 cur值的不同,分为以下三种情况:

当 cur=0时: 此位1的出现次数只由高位 high决定,计算公式为:high×digit:

 当cur=1时: 此位1的出现次数由高位high和低位low决定,计算公式为:high×digit+low+1

当cur=2,3,⋯ ,9时 此位1的出现次数只由高位 high决定,计算公式为:(high+1)×digit:

package Math;/*** @Classname JZ43整数中1出现的次数* @Description TODO* @Date 2023/3/7 20:55* @Created by xjl*/
public class JZ43整数中1出现的次数 {/*** @description 整数中1出现的次数 * @param: n* @date: 2023/3/7 20:56* @return: int* @author: xjl*/public int countDigitOne(int n) {int digit = 1, res = 0;int high = n / 10, cur = n % 10, low = 0;while (high != 0 || cur != 0) {if (cur == 0) {res += high * digit;} else if (cur == 1) {res += high * digit + low + 1;} else {res += (high + 1) * digit;}low += cur * digit;cur = high % 10;high /= 10;digit *= 10;}return res;}
}

复杂度分析

  • 时间复杂度O(log⁡n): 循环内的计算操作使用O(1)时间;循环次数为数字n的位数,即log⁡10n,因此循环使用O(log⁡n)时间。
  • 空间复杂度 O(1) : 几个变量使用常数大小的额外空间。

二、暴力解析

一般是超时的选择

    /*** @description 相当于的暴力求解的顺序* @param: n* @date: 2023/3/7 21:15* @return: int* @author: xjl*/public int countDigitOne2(int n) {String result = "";for (int i = 1; i <= n; i++) {result += String.valueOf(i);}int count = 0;for (int i = 0; i < result.length(); i++) {if (result.charAt(i) == '1') {count++;}}return count;}

复杂度分析

  • 时间复杂度O(n): 循环内的计算操作使用O(1)时间;循环次数为数字n的位数,即log⁡10n,因此循环使用O(log⁡n)时间。
  • 空间复杂度 O(n) : 几个变量使用常数大小的额外空间。

博文参考

《leetcode》

相关文章:

剑指 Offer 43. 1~n 整数中 1 出现的次数

摘要 剑指 Offer 43. 1&#xff5e;n 整数中 1 出现的次数 一、数学思维解析 将1~ n的个位、十位、百位、...的1出现次数相加&#xff0c;即为1出现的总次数。 设数字n是个x位数&#xff0c;记n的第i位为ni​&#xff0c;则可将n写为 nxnx−1⋯n2n1&#xff1a; 称" …...

如何成为程序员中的牛人/高手?

目录 一、牛人是怎么成为牛人的&#xff1f; 二、关于牛人的一点看法 三、让程序员与业务接壤&#xff0c;在开发团队中“升级” 四、使用低代码平台 目标效果 五、最后 祝伟大的程序员们梦想成真、码到成功&#xff01; 一、牛人是怎么成为牛人的&#xff1f; 最近在某…...

云原生时代顶流消息中间件Apache Pulsar部署实操之轻量级计算框架

文章目录Pulsar Functions(轻量级计算框架)基础定义工作流程函数运行时处理保证和订阅类型窗口函数定义窗口类型滚动窗口滑动窗口函数配置函数示例有状态函数示例窗口函数示例自定义函数开发定义原生语言接口示例Pulsar函数SDK示例Pulsar Functions(轻量级计算框架) 基础定义 …...

数据结构刷题(十九):77组合、216组合总和III

1.组合题目链接过程图&#xff1a;先从集合中取一个数&#xff0c;再依次从剩余数中取k-1个数。思路&#xff1a;回溯算法。使用回溯三部曲进行解题&#xff1a;递归函数的返回值以及参数&#xff1a;n&#xff0c;k&#xff0c;startIndex(记录每次循环集合从哪里开始遍历的位…...

PyQt 做美*女GIF设置桌面,每天都很爱~

人生苦短&#xff0c;我用python 要说程序员工作的最大压力不是来自于工作本身&#xff0c; 而是来自于需要不断学习才能更好地完成工作&#xff0c; 因为程序员工作中面对的编程语言是在不断更新的&#xff0c; 同时还要学习熟悉其他语言来提升竞争力… 好了&#xff0c;学习…...

[渗透测试笔记] 54.日薪2k的蓝队hw中级定级必备笔记系列篇3之域渗透黄金票据和白银票据

前文链接 [渗透测试笔记] 52.告别初级,日薪2k的蓝队hw中级定级必备笔记 [渗透测试笔记] 53.日薪2k的蓝队hw中级定级必备笔记2 文章目录 Kerberos认证协议NTLM认证协议Kerberos和NTLM比较黄金票据原理黄金票据条件复现过程白银票据原理白银票据条件复现过程黄金票据和白银票据…...

【异常】Spring Cloud Gateway网关自定义过滤器无法获取到请求体body的内容?不存在的!

一、需求说明 项目要使用到网关SpringCloud Gateway进行验签,现在定义了一个过滤器ValidateSignFilter, 我希望,所以过网关SpringCloud Gateway的请求,都能够校验一下请求头,看看是否有Sign这个字段放在请求头中。 二、异常说明 但是,我遇到了SpringCloud Gateway网关…...

CNN 卷积神经网络对染色血液细胞分类(blood-cells)

目录 1. 介绍 2. 加载数据 3. 可视化 3.1 显示单幅图像 3.2 显示多幅图像...

Kubernetes学习(三)Service

Service对象 为什么需要Service 每个Pod都有自己的IP地址&#xff0c;但是在Deployment中&#xff0c;在同一时刻运行的Pod集合可能与稍后运行该应用程序的Pod集合不同。 这就导致了一个问题&#xff1a;如果一组Pod&#xff08;称为后端&#xff09;为集群内其他Pod&#x…...

数学小课堂:古德-图灵折扣估计法和插值法(防范黑天鹅事件的方法)

文章目录 引言I 黑天鹅事件产生的原因1.1 置信度1.2 数据的稀疏性1.3 零概率问题II 防范黑天鹅事件的方法2.1 古德-图灵折扣估计法2.2 插值法引言 防范黑天鹅事件的方法 古德-图灵折扣估计法:它主要是解决零概率的事件古德的方法虽然解决了零概率的问题,但是依然没有解决数据…...

redis getshell方法

前言 参考文章 https://paper.seebug.org/1169 https://blog.csdn.net/weixin_55843787/article/details/123829606 https://blog.csdn.net/chenglanqi6606/article/details/100909518 Redis是什么 Redis是一款基于键值对的NoSQL数据库&#xff0c;它的值支持多种数据结构 …...

【ONE·C || 程序编译简述】

总言 C语言&#xff1a;程序编译相关。    文章目录总言1、程序的翻译环境和运行环境1.1、简述1.2、翻译环境&#xff1a;程序编译与链接1.2.1、简介&#xff1a;程序如何从.c文件形成.exe可执行程序1.2.2、过程说明1.3、运行环境2、预处理详解2.1、预定义符号2.2、#define2.…...

MGAT: Multimodal Graph Attention Network for Recommendation

模型总览如下&#xff1a; 图1&#xff1a;多模态图注意力网络背景&#xff1a;本论文是对MMGCN&#xff08;Wei et al., 2019&#xff09;的改进。MMGCN简单地在并行交互图上使用GNN&#xff0c;平等地对待从所有邻居传播的信息&#xff0c;无法自适应地捕获用户偏好。 MMGCN…...

在SNAP中用sentinel-1数据做InSAR测量,以门源地震为例

在SNAP中用sentinel-1数据做InSAR0 写在前面1 数据下载2 处理步骤2.1 split2.2 apply orbit 导入精密轨道2.3 查看数据的时空基线base line2.4 back-geocoding 配准2.5 Enhanced Spectral Diversity2.6 Deburst2.7 Interogram Formation 生成干涉图2.8 Multilook 多视2.9 Golds…...

MySQL常用函数

什么是函数&#xff1f; 函数是指一段可以直接被另一段程序调用的程序或代码。 字符串函数 函数功能CONCAT(S1,S2,…Sn)字符串拼接&#xff0c;将S1&#xff0c;S2&#xff0c;… Sn拼接成一个字符串LOWER(str)将字符串str全部转为小写LOWER(str)将字符串str全部转为小写LPAD(…...

51单片机数字电子钟开题报告

目录 选题背景 初步设计方案 芯片的选型 编译环境 关键问题 策略 方案 参考文献 选题背景 数字电子钟是一种受到越来越多人喜爱的钟表&#xff0c;其准确性和稳定性成为设计和研发的重要考虑因素。在现代社会&#xff0c;时间的准确性对于各行各业都非常重要&#xff0…...

day7 HTTP协议

HTTP协议 什么是协议&#xff1f; 协议实际上是某些人&#xff0c;或者某些组织提前制定好的一套规范&#xff0c;大家都按照这个规范来&#xff0c;这样可以做到沟通无障碍。协议就是一套规范&#xff0c;就是一套标准。由其他人或其他组织来负责制定的。我说的话你能听懂&…...

3DCAT+一汽奥迪:共建线上个性化订车实时云渲染方案

近年来&#xff0c;随着5G网络和云计算技术的不断发展&#xff0c;交互式3D实时云看车正在成为一种新的看车方式。与传统的到4S店实地考察不同&#xff0c;消费者可以足不出户&#xff0c;通过网络与终端设备即可实现全方位展示、自选汽车配色、模拟效果、快捷选车并进行个性化…...

yii2项目使用frp https2http插件问题

yii2内网项目&#xff0c;使用frp进行内网穿透&#xff0c;使用 https2http插件把内网服务器http流量转成https&#xff0c;会存在一个问题&#xff1a;当使用 $this->redirect(...) 或 $this->goHome() &#xff08;其实用的也是前者&#xff09;等重定向时&#xff0c;…...

关于 interface{} 会有啥注意事项?下

我们一起来回顾一下上一次说到的 interface{} 可以用来做多态 接口类型分为空接口类型和非空接口类型&#xff0c;他们的底层数据结构不太一样 这里顺便说一下&#xff0c;用来作态需要满足这样的条件&#xff1a; 首先得有父类指针指向子类的对象这个接口还必须是非空接口…...

白起、项羽、黄巢杀降时的第三选择

白起、项羽、黄巢&#xff0c;他们都曾站在“杀降”这个决策悬崖上。与其说这是他们个人的暴虐&#xff0c;不如说他们当时都陷入了一个由战争逻辑、资源短缺和恐惧心理共同构筑的绝境。在那个系统里&#xff0c;他们几乎无法做出别的选择。&#x1f3b2; 那场被逼到墙角的困兽…...

如何在Windows上轻松安装APK文件?APK Installer完整指南

如何在Windows上轻松安装APK文件&#xff1f;APK Installer完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows上安装安卓应用而烦恼吗&#xff1f;…...

51单片机项目进阶:给电子秤加上JQ8400语音播报,一线串口控制到底有多方便?

51单片机电子秤语音播报模块深度实战&#xff1a;从JQ8400-FL选型到一线串口控制全解析 当你已经完成基础电子秤项目&#xff0c;能够准确显示重量并计算价格时&#xff0c;如何让这个设备"会说话"&#xff1f;语音交互功能的加入不仅能提升用户体验&#xff0c;更能…...

从自由建模到精确设计:CAD_Sketcher如何为Blender带来工程级草图绘制能力

从自由建模到精确设计&#xff1a;CAD_Sketcher如何为Blender带来工程级草图绘制能力 【免费下载链接】CAD_Sketcher Constraint-based geometry sketcher for blender 项目地址: https://gitcode.com/gh_mirrors/ca/CAD_Sketcher 你是否曾在使用Blender进行机械设计时&…...

车载以太网调试‘直连’方案揭秘:不用MCU,如何用两颗PHY芯片搞定100M转换?

车载以太网调试直连方案&#xff1a;两颗PHY芯片实现100M转换的技术解析 在车载电子系统日益复杂的今天&#xff0c;以太网技术凭借其高带宽和可靠性优势&#xff0c;正逐步取代传统的CAN总线成为车载网络的主流选择。然而&#xff0c;当工程师需要调试这些车载以太网设备时&am…...

Arm编译器浮点运算实现与优化实践

1. Arm编译器中的浮点运算实现机制在嵌入式开发领域&#xff0c;浮点运算的实现质量直接影响着数值计算的精度和系统性能。Arm编译器通过深度整合IEEE 754标准&#xff0c;为开发者提供了可靠的浮点运算支持。让我们先看一个典型场景&#xff1a;当使用printf输出浮点数时&…...

问卷设计对比实测:手工瞎编≠通用 AI≠学术专用!虎贲等考 AI 重新定义可发表级问卷

在毕业论文、课程论文、期刊实证研究中&#xff0c;问卷是决定数据是否有效、模型能否跑通、论文能否过关的核心一环。但 90% 的学生都在用错误方式做问卷&#xff1a;手工凭感觉出题、网上随便抄量表、用通用 AI 随意生成…… 结果要么信效度不达标&#xff0c;要么数据无法分…...

从愚人节玩笑到工程实践:四个软硬件结合的创意项目技术拆解

1. 从愚人节玩笑到工程师的创意沙盘每年四月一日&#xff0c;总有些介于荒诞与现实之间的“产品”构想冒出来&#xff0c;在工程师社区里引发一阵会心一笑。但如果你仔细琢磨&#xff0c;会发现这些看似玩笑的点子&#xff0c;往往藏着一丝对技术边界、用户体验乃至市场需求的犀…...

直播人力成本居高不下?2026十大AI数字人直播平台推荐实现长效运营

引文&#xff1a; 2026年&#xff0c;直播电商的竞争早已从“拼人设”转向了“拼夜间值守效率”。据公开数据显示&#xff0c;AI数字人核心市场规模预计在2026年逼近千亿大关&#xff0c;其中“降本”和“长效运营”是众多商家投身高频无人直播的核心诉求。事实上&#xff0c;…...

北京AGG专用配件哪家性价比高

在选择AGG聚砂吸声系统的专用配件时&#xff0c;不少工程方和设计师都会问“北京哪家性价比高”。我的建议是&#xff1a;别只看标价&#xff0c;要看配件与系统的适配度、长期使用的稳定性&#xff0c;以及能否提供及时的技术支持。AGG系统本身是一个完整的声学解决方案&#…...