LeetCode第258题,Add Digits

数据压缩算法—2无损压缩算法 几个常见的编码算法 (一) 字典算法   字典算法是最为简单的压缩算法之一。它是把文本中出现频率比较多的单词或词汇组合做成一个对应的字典列表,并用特殊代码来表示这个单词或词汇。例如:   有字典列表:   00=Chinese   01=People   02=China   源文本:I am a Chinese people,I am from China 压缩后的编码为:I am a 00 0... 阅读详情
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
For example:
Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
Follow up:

Could you do it without any loop/recursion in O(1) runtime?

public int addDigits(int num) {
   return (num - 1) % 9 + 1;
}

为什么是(num-1)%9+1呢?
num-1是要考虑到 num<10的时候的情况, 当num>10时, num%9就可以得到结果了.(为什么当num>10时, num%9就可以得到结果呢?)

转载大神的解释就一清二楚了! 感谢博主的分享 http://my.oschina.net/Tsybius2014/blog/497645

答案:

可以举例说明一下。假设输入的数字是一个5位数字num,则num的各位分别为a、b、c、d、e。
有如下关系:num = a * 10000 + b * 1000 + c * 100 + d * 10 + e
即:num = (a + b + c + d + e) + (a * 9999 + b * 999 + c * 99 + d * 9)
因为 a * 9999 + b * 999 + c * 99 + d * 9 一定可以被9整除,因此num模除9的结果与 a + b + c + d + e 模除9的结果是一样的。
对数字 a + b + c + d + e 反复执行同类操作,最后的结果就是一个 1-9 的数字加上一串数字,最左边的数字是 1-9 之间的,右侧的数字永远都是可以被9整除的。
这道题最后的目标,就是不断将各位相加,相加到最后,当结果小于10时返回。因为最后结果在1-9之间,得到9之后将不会再对各位进行相加,因此不会出现结果为0的情况。因为 (x + y) % z = (x % z + y % z) % z,又因为 x % z % z = x % z,因此结果为 (num - 1) % 9 + 1,只模除9一次,并将模除后的结果加一返回。

数据压缩算法 数据压缩算法 一、 概念: 数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。 在计算机科学和信息论中,数据压缩或者源编码是按照特定的编码机制用比未经编码少的数据位元(或者其他信息相关的单元)表示信息的过程。 二、 算法编码(哈夫曼压缩算法编码): 哈夫曼压缩算法编码是 阅读详情

相关推荐

【算法】深入了解数据压缩算法(无损压缩和有损压缩)

数据压缩是计算机领域中一项重要的技术,它可以将数据在占用更小的存储空间或通过更低的传输带宽进行表示和传输,压缩算法基于对数据的统计特性和重复模式的利用,可以分为两大类:无损压缩算法和有损压缩算法。

crr411422的博客 3万+

小而巧的数字压缩算法:zigzag

这样,为了传输一个整型(int)1,我们需要传输00000000_00000000_00000000_00000001 32个bits,除了一位是有价值的1,其他全是基本无价值的0(此处发出一个声音:浪!类似的,我们还原的代码就反过来写就可以了。(−1)10=(11111111_11111111_11111111_11111111)补=(11111111_11111111_11111111_11111111)符号后移=(00000000_00000000_00000000_00000001)zigzag。

2301_80124151的博客 1569

AHB不对称半桥反激电路设计(一)变换器拓扑工作原理详解

本文详细分析了AHB(不对称半桥)反激变换器拓扑的工作原理及关键优势。该拓扑通过谐振腔结构实现原边功率管的零电压开通(ZVS)和副边整流管的零电流关断(ZCS),显著提升效率至95%以上。文章阐述了6个工作阶段的时序特征,包括谐振电感电流和电容电压的数学模型推导。AHB拓扑具有漏感能量回收、宽电压输出(适配PD快充等场景)和协同储能等优势,相比传统方案可缩小变压器体积30%,成为100-300W隔离电源的理想选择。

【Simon】的博客 7142

LeetCode刷题笔记--258. Add Digits

258. Add Digits Easy 379713FavoriteShare Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. Example: Input: 38 Output: 2 Explanation: The proce...

vivian0239的博客 134

我用 Claude Code 给 Spring Boot 老项目做了一次代码 Review:查出 4 类隐藏问题

接手 Spring Boot 老项目时,真正麻烦的往往不是编译报错,而是分散在业务代码中的空指针、N+1 查询、异常吞没和并发隐患。本文记录一次使用 Claude Code 辅助代码 Review 的完整流程,并给出提示词、Java 示例、修改方案和人工复核方法。

海波的专栏 397

变压器铁心100Hz振动噪声的COMSOL磁致伸缩仿真全流程

磁致伸缩是铁磁材料在磁场作用下发生尺寸变化的现象,也是变压器铁心振动与噪声产生的根本原因。由于应变与磁通密度近似成平方关系,50Hz电网激励下铁心振动基频为100Hz。借助COMSOL多物理场仿真,可将磁场计算结果映射为结构应力和变形,完成“电磁—结构”单向耦合分析。该技术广泛应用于变压器振动噪声预测、结构优化及故障诊断等工程场景。本文从磁致伸缩物理机理出发,系统梳理了材料参数、等效建模、边界条件设置和结果校核等关键步骤,帮助工程师掌握从磁致伸缩到结构变形的完整仿真链路,解决实际工程对标难题。

weixin_33796177的博客 312

leetcode:258 Add Digits-每日编程第二题

Add Digits Total Accepted: 49005 Total Submissions: 102997 Difficulty: Easy Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.  For e

易水的博客 808

matlab生成blocks、bumps和doppler标准测试信号

关键函数:wnoise使用方式X = wnoise(FUN,N) [X,XN] = wnoise(FUN,N,SQRT_SNR) [X,XN] = wnoise(FUN,N,SQRT_SNR,INIT)X = wnoise(FUN,N) 返回由 FUN给出的信号,长度为2^N,幅值范围[0,1].[X,XN] = wnoise(FUN,N,SQRT_SNR) ,返回了一个测试信号X,以及一个加噪

ZSZ_shsf的博客 6580

leetCode刷题记录37_258_Add Digits

/*****************************************************问题描述************************************************* Given a non-negative integer num, repeatedly add all its digits until the result has only on...

gunsmoke的专栏 148

PMF5.0计算

EPA PMF5.0 计算步骤

nuistsy的博客 4534

从原理到应用:深入解析双编码器在机器人关节力矩感知中的实现

本文深入解析了双编码器方案在机器人关节力矩感知中的实现原理与应用。该方案通过在电机侧和输出侧分别安装编码器,利用两者位置差异间接高精度计算外力,克服了传统电流环精度不足和扭矩传感器成本高昂的缺点。它为实现协作机器人的丝滑拖动示教、灵敏碰撞检测以及足式机器人的动态平衡与柔顺控制提供了关键技术支撑,是目前高性能机器人力控的主流选择。

t8u9v0w1x的博客 662

【LeetCode】258. Add Digits(水题or公式)

原题Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.For example:Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit,

jiange_zh的博客 656

9篇9章1节:认识 SHARE 数据库

SHARE数据库是欧洲最大的跨国老龄化追踪调查项目,覆盖28个欧洲国家和以色列的50岁及以上人群。自2004年启动以来,已完成14-16万受访者的50-60万次访谈,形成跨度20年的纵向数据。该数据库采用标准化的多阶段抽样方法,收集健康、经济和社会关系等领域的多维度信息,具有高度的跨国可比性。SHARE与美国HRS、英国ELSA等调查对接,构成全球老龄化研究网络。数据免费向科研人员开放,但需注册并承诺仅用于非商业性研究。该项目由欧盟委员会等多方资助,为老龄化研究和政策制定提供了重要实证依据。

MD Code 900

LeetCode之JavaScript解答-258题:Add Digits

题目:给一个非负整数 num,反复添加所有的数字,直到结果只有一个数字。例如:设定 num = 38,过程就像: 3 + 8 = 11, 1 + 1 = 2。 由于 2 只有1个数字,所以返回它。进阶:你可以不用任何的循环或者递归算法,在 O(1) 的时间内解决这个问题么?贡献者:特别感谢 @jianchao.li.fighter 用于添加此问题并创建所有测试用例。分析:普通解法这里就先不讨论了,...

weixin_34233618的博客 152

Feature ‘alsa‘ was enabled, but the pre-condition ‘config.unix && !config.qnx && libs.alsa‘ failed解决

这个问题主要是Qt多媒体插件中缺少了ALSA音频库,所以我们需要自行先编译ALSA 在执行./configure的时候,配置项中ALSA为no Qt Multimedia: ALSA ................................... no GStreamer 1.0 .......................... no GStreamer 0.10 ......................... no Video for Linux .............

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 2587

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

[LeetCode]258. Add Digits

[LeetCode]258. Add Digits题目描述思路循环相加每一位 每次获取num的个位,加到和中,num = num / 10,循环直至num / 10为0,最后在外层sum += num, 对得到的sum进行判断,若大于等于10,递归处理 否则输出 详见代码代码class Solution { public: int addDigits(int num) {

Lcharon的博客 3465

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【leetcode刷题】[简单]258. 各位相加(add digits)-java

各位相加 add digits题目分析解答 题目 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。 进阶: 你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗? 代码模板: class Solution { ...

mikuluna的博客 285

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

leetcode刷题笔记(Golang)--258. Add Digits

258. Add Digits Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. Example: Input: 38 Output: 2 Explanation: The process is like: 3 + 8 = 11, 1 + 1 = ...

weixin_44555304的博客 148

Leetcode - Math -258. Add Digits(数位求和,规律题)

1. Problem Description  Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. For example: Given num = 38, the process is like: 3 + 8 = 11, 1

Dancinglikelink 620

LeetCode | 258. Add Digits 数字位数相加简单数学技巧题

Given a non-negative integer num, repeatedly add all itsdigits until the result has only one digit. For example: Given num = 38, the process islike: 3 + 8 = 11, 1+ 1 = 2. Since 2 has only one di

u012737193的博客 269

LeetCode 258. Add Digits 题解(C++)

Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.

prayyojay的博客 391

add digits java_【leetcode刷题】[简单]258. 各位相加(add digits)-java

各位相加 add digits题目给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。示例:输入: 38输出: 2解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。进阶:你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?代码模板:class Solution {public int addDigits(i...

weixin_29711757的博客 171

258. Add Digits

258. Add DigitsLeetcode link for this questionDiscription:Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.For example:Given num = 38, the process is

teminusign的博客 298

[LeetCode]258. Add Digits(把数各个位上的数字相加)

258. Add DigitsGiven a non-negative integer num, repeatedly add all its digits until the result has only one digit. 题目大意: 给定一个非负整数num,重复地添加所有其数字,直到结果只有一个数字。For example:Given num = 38, the process is

whl_program的博客 919

leetcode.258.Add Digits

Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.

RaymondWong的博客 255
上一篇: SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。”错误的解决办法
下一篇: LeetCode第202题. Happy Number
sipherhern
博客等级 码龄11年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值