各位相加-leetcode解题

LeetCode 258 超通俗讲解:各位相加的两种打开方式 这篇文章来聊聊 LeetCode 258 题,题目非常直白——就是给一个非负整数,不停地把它每一位的数字加在一起,直到结果只剩一位数为止。文章将带大家用 Swift 实现两种解法:暴力模拟 + 数学 O(1) 解法,并附上可运行 Demo。LeetCode 258 虽然题目简单,但其实挺适合用来理解数学优化思维。暴力法虽然慢一点,但清晰易懂;而数学法则展现出巧妙的数论思想。日常工作中,如果遇到类似“反复计算直到稳定”的问题,这种解题模型是可以借鉴的。 阅读详情

各位相加 Add Digits 题述

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。

示例:

输入: 38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
进阶:
你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?

解题思路及代码

思路一 使用循环解题 :使用循环或递归来解决这个问题是很简单的,只需要 把 输入的非负整数 转变成 字符串
然后 每个字符 取出来 再以 int类型相加 ,
判断加和后的位数,如果不是一位,
再循环一次上面做的事情。这个代码就懒得写了。。

思路二 不使用循环解题 : 此时就需要找数据之间的关系了,
假设我们有个4位数, 1314, 1314= 1 x 1000+3 x 100+1 x 10+4 x 1
换个形式写 就是 1000 a +100 b +10 c + d
我们要求的是 a + b + c+d
这其中的关系就 比较明显了 , 他们相差 999a + 99 b + 9c
3位数: 100 a + 10 b +c
我们要求的是: a + b +c
相差 99 a + 9 b
2位数: 10a+b
要求的是 a+b
相差 9a
1位数: a
要求: a
相差: 0
由此可得一个规律,两位数以上,输入的非负整数 对 (它的位数-1)个9 求余 可初步得到我们要求的数。

因为我们不仅仅是要简单地把数的 各个位数相加 我们还要一直加,加到结果只是 一位数。
很明显 十以内的数字就是它本身了,但 像 999 或者 998 之类的数字,我们还要接着再运算,
像 999 这种 可以整除 9 的数属于特例, 它的结果肯定是9 ,所以不妨在一开始就将这类数分类处理,
像998 这样的数,在经过对 99 求余之后 ,所剩的数也不会超过两位了,
所以接下来还要对 9 求余数,就可得一位数的解了。

所以,代码思路就是:
输入非负整数num,
先判断,如果 num 大于等于 10:
如果 num 能整除 9
返回 9
如果不能:
就除以 num 最高位数-1 个 9 求其余数
如果余数大于十:
再除一次9
如果余数不大于10:
返回 余数
如果 num 不大于 10:
返回 num

class Solution:
    def addDigits(self, num: int) -> int:
    #先判断,如果 num 大于等于 10:
        if num >=10:
        #如果 num 能整除 9 
            if num%9==0:
                return 9
            else:
            #除以   num 最高位数-1 个 9  求其余数
                str1 = str(num)
                lenth9 = len(str1) - 1
                str2 = '9' * lenth9
                int9 = int(str2)
                res = num % (int9)
                #如果余数大于十:
                if res>=10:
                #再除一次9
                    return (res%9)
                else:
                    return res
        else:
            return num

附图:
在这里插入图片描述

伺服驱动器启用后对传感器线信号干扰的解决方案 在一些Arduino项目中,研究者发现,当伺服电机启动时,传感器信号会出现显著噪声。例如,在一个假肢项目中,研究者使用光电隔离器成功隔离了伺服驱动器对EMG传感器的干扰。然而,当启用伺服驱动器时,传感器线信号常常受到干扰,导致系统性能下降。传感器线信号是传感器输出的电信号,用于测量物理量,如温度、光线或位置。例如,在一些案例中,伺服驱动器的开关操作可能导致传感器信号出现尖峰或波动,特别是在模拟传感器上更为明显。描述: 使用光电隔离或其他隔离技术,分离伺服驱动器和传感器的电气路径,防止直接干扰。 阅读详情

相关推荐

logisim实验六:MIPS运算器设计

实验目的 学生理解算术逻辑运算单元(ALU)的基本构成,掌握 Logisim 中各种运算组件的使用方法,熟悉多路选择器的使用,能利用前述实验完成的 32 位加法器、 Logisim 中的运算组件构造指定规格的 ALU 单元。 设计要求 利用前面实验封装好的 32 位加法器以及 logisim 平台中现有运算部件构建一个 32 位算术逻辑运算单元(禁用 Logisim 系统自带的加法器,减法器),可支持算术加、减、乘、除,逻辑与、或、非、异或运算、逻辑左移、逻辑右移、算术右移运算,支持常用程序状态标志(有符号

gyp0205的博客 2万+

Add Digits -- 增加数字

Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. 给出一个正整数,对它的每一位进行相加,直到结果是个一位的数字。

whyalwaysmea 675

AI视频生成成本优化实战:混合架构与硬件选型

AI视频生成技术正面临效果与成本的二元博弈,其核心挑战在于高昂的推理算力消耗与黑箱服务的不确定性。从技术原理看,视频生成依赖扩散模型等深度学习架构,通过多轮迭代实现像素级合成,这导致GPU显存占用和电力消耗呈指数级增长。在工程实践中,采用混合推理架构能有效平衡成本与质量,例如云端处理关键帧配合本地渲染过渡帧,实测可降低58%支出。硬件选型方面,消费级显卡魔改与边缘计算设备为中小企业提供了可行方案,如RTX 3090显存扩容或Jetson AGX边缘部署。当前AI视频应用已渗透电商直播、新闻制作等领域,但需警

weixin_29531177的博客 295

【LeetCode】Add Digits(各位相加)

这道题是LeetCode里的第258道题。 题目描述: 给定一个非负整数num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。由于2 是一位数,所以返回 2。 进阶: 你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗? 如果我们用循环做的话,首先先...

『诞生之时已至,以此修正万象』 228

Codesys—Modbus RTU称重变送器通讯案例

Codesys控制器使用标准的Modbus库,与支持ModbusRTU的称重变送器进行通讯的案例

原来你也__的博客 2740

UVM(5)-TLM通信

TLM是一种基于事务 (transaction) 的通信方式,通常在高抽象级语言例如SystemC或者SV/UVM中作为模块之间的通讯方式。

2301_76431006的博客 2106

Add Digits 各位相加

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。 进阶: 你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗? 思路:这道题的笨办法就不说了,说一个discuss里面很厉害的方法,可以实现O(1)的复杂度...

qq_26410101的博客 249

Unity 数字孪生实战:PiXYZ Plugin工业模型高效处理指南

本文是Unity数字孪生实战指南,重点介绍了如何使用PiXYZ Plugin高效处理工业CAD模型。针对工业模型导入Unity时面临的格式壁垒、数据爆炸和资产混乱等核心痛点,文章提供了从环境安装、基础导入到智能减面、资产清理的完整解决方案,并分享了预设自动化、运行时导入等高级技巧与性能优化策略,帮助开发者快速打通工业设计与实时交互流程。

weixin_29009501的博客 258

【Leetcode】258. Add Digits(配数学证明)

题目地址: https://leetcode.com/problems/add-digits/ 给定一个非负整数nnn,加总其各位数之和得到另一个整数,再重复做此操作直到得到一位数。求那个一位数。 首先如果这个数本身就是一位数,则返回自己;否则判断一下其能否被999整除,如果能则返回999,否则返回余数。代码如下: public class Solution { public int addDigits(int num) { if (num < 10) {

数学、算法爱好者的博客 252

5GCPE与4G物联网卡兼容实战:通过AT指令修改IMEI实现设备迁移

本文详细介绍了如何通过AT指令修改5GCPE设备的IMEI,实现4G物联网卡的设备迁移。从硬件准备、驱动安装到串口工具配置,再到具体的AT指令操作步骤,提供了全面的实战指南。文章还包含信号优化、APN设置等实用技巧,帮助用户顺利完成设备迁移并提升网络性能。

weixin_28684757的博客 633

客服转人工率直降60%!OpenClaw深度集成NLP引擎,打造企业级对话自动化智能客服系统

本文介绍了一套基于OpenClaw智能体框架和NLP大模型引擎的智能客服系统解决方案。该系统通过深度集成NLP引擎实现精准语义理解,采用分层架构设计支持多渠道接入和业务系统对接,显著提升了客服效率。核心亮点包括:92%的重复问题自动解决率,60%的转人工率下降,40%的人力成本降低,以及从30秒压缩至0.5秒的平均响应时长。文章详细阐述了技术选型、系统架构设计、核心模块实现等关键环节,展示了如何通过智能对话系统破解传统客服业务中的人力资源与服务质量矛盾。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 362

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

uniapp - 微信小程序接入官方人脸识别认证详细流程及示例源码,Uniapp微信小程序项目集成官方提供的人脸识别身份验证插件接口(多种示例:人脸核验、身份证件与人脸是否匹配、是否活体、实名认证等)

uni-app微信小程序人脸识别认证,使用uniapp开发微信小程序的人脸采集功能/人脸识别功能,uniapp vue3微信小程序活体人脸识别,Uni-app微信小程序实名认证,uniApp微信小程序人脸认证,UniApp的微信小程序实名认证与人脸识别系统开发,人脸核身微信小程序uni-app接入流程,wx.startFacialRecognitionVerify,uniapp开发微信小程序-人脸采集功能、微信人脸识别实名认证集成指南,识别失败,人脸识别接口怎么调用,前后端完整示例代码demo,人脸检测功能

🏆 前端领域优质创作者 3284

leetcode解题之各位相加

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。 进阶: 你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/probl...

l888c的专栏 214

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Leetcode-9 各位相加(*)

1.获得各个位的数字:num的范围很大,有可能取到很大的值,如果直接用num做除法或者取余取得各个数位,比较复杂,可能会使用很多个for循环,而题目只要求将num中的各位的数字相加,即将num中的每个数字相加,又num是非负整数,2.2当获得的数是1位数进行返回,就不再循环,所以进行循环的条件是当前数不是1位数,又当前数是非负整数,所以当前数非1位数,则当前数有可能是2位数、3位数等等,再结合第一点,2位数、3位数转为字符串的长度肯定是大于1位数的,由于 2 是一位数,所以返回 2。

qq_52145585的博客 521

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LeetCode-258. 各位相加【数学 数论 模拟】

该方法的目的是计算一个整数 num 的数位根,即反复相加其各位数字直到得到一个单位数的过程。这是一个数学特性,任何非零整数的数位,如果反复相加,最终会得到一个数,该数除以9的余数与原数除以9的余数相同。给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。进阶:你可以不使用循环或者递归,在 O(1) 时间复杂度内解决这个问题吗?

zik的博客 637

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LeetCode(258):各位相加 Add Digits(Java)

2020.12.27 LeetCode 从零单刷个人笔记整理(持续更新) github:https://github.com/ChopinXBP/LeetCode-Babel 智力题 规律很简单:数字为0时,结果为0;数字为9的倍数时,结果为9;其他情况下为除以9的余数。 假设输入的数字是一个5位数字num,则num的各位分别为a、b、c、d、e。 有如下关系:num = a * 10000 + b * 1000 + c * 100 + d * 10 + e 即:num = (a + b + c + d

NJU_ChopinXBP的博客 262

题目:258.各位相加

leetcode 题目:258.各位相加

2301_76145947的博客 169

LeetCode第258题_各位相加

LeetCode第258题要求将一个非负整数反复进行各位相加,直到结果为一位数。文章提供了两种解法:一是直观的模拟法,通过循环计算数字各位之和;二是高效的数学方法,利用数字根公式(num-1)%9+1实现O(1)时间复杂度。代码示例展示了C#、Python和C++的实现,性能对比表明数学方法更优。文章还分析了常见错误、解法优劣以及相关题目,帮助读者全面理解该问题。 (字数:148)

qq_40263592的博客 1193

leetcode刷题之258.各位相加

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

胡萝卜 271

leetcode 258. 各位相加

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

Sophia_fez的博客 386

力扣刷题(第六十一天)

利用数学中的数字根(Digital Root)公式,结果可以直接通过。- python脚本学习。计算,但需要特殊处理。- 保持更新,努力学习。

eachin_z的博客 149

力扣刷题记录——258. 各位相加、263.丑数、268.丢失的数字

​ 本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《258. 各位相加、263.丑数、268.丢失的数字》。 ​

weixin_63866037的博客 731

[leetcode] 各位相加

leetcode 各位相加 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。

热红豆不加糖 184

【LeetCode】258. Add Digits 各位相加(Easy)(JAVA)

【LeetCode】258. Add Digits 各位相加(Easy)(JAVA) 题目地址: https://leetcode.com/problems/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

qq_16927853的博客 130

Leetcode258. 各位相加

Leetcode258. 各位相加 题目: 给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。 题解: 两位数: 2位数 num = a * 10 + b num1 = a + b num - num1 = 9 * a; 缩小了a 个...

会流泪de鱼的博客 349
上一篇: 爬楼梯-leetcode解题
下一篇: 深度学习模型训练提高GPU利用率的几个想法
山有木兮I
博客等级 码龄8年 24粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值