领扣(LeetCode)各位相加 个人题解
2024-09-01 17:36:03
给定一个非负整数 num
,反复将各个位上的数字相加,直到结果为一位数。
示例:
输入:38
输出: 2
解释: 各位相加的过程为:3 + 8 = 11
,1 + 1 = 2
。 由于2
是一位数,所以返回 2。
进阶:
你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?
将非负整数视为字符串,做法就比较简单了,循环解决了问题。
进阶的做法完全属于数学范畴,不符合练习本题的意义,请百度相关题解。
代码如下:
class Solution {
public int addDigits(int num) {
int fin=num;
while(fin>9)
{
char[] tmp=Integer.toString(fin).toCharArray();
int save=0;
for (char c : tmp) {
save+=(int)(c-'0');
}
fin=save;
}
return fin;
}
}
最新文章
- 【Web动画】SVG 线条动画入门
- 安装WAMP 及 修改MYSQL用户名 、 密码
- 关于缺少nvToolsExt64_1.lib时的PhysX的处理
- Flex air修改外部xml文件 (转)
- 数据结构与算法(1)支线任务2——Basic Calculator
- NumPy 上手一个例子 vectorsum.py
- bash的操作环境[转]
- Testing - Selenium
- C#定制并发送HTML邮件
- python 代码片段11
- 产生n bit所有可能的序列
- 深度学习之seq2seq模型以及Attention机制
- MognoDB3.4.2用户访问配置管理
- php的运行原理、cgi对比fastcgi以及php-cgi和php-fpm之间的联系区别
- 【LOJ】#2187. 「SHOI2014」三叉神经树
- Linux内核分析——第二章 从内核出发
- Biorhythms(中国剩余定理)
- Ubuntu 14.04 安装 SteamOS 会话
- htpasswd命令的使用
- sigar在Centos和Windows下使用java系统软硬件配置信息