【ACM从零开始】LeetCode OJ-Add Digits
2015-10-07 14:47
330 查看
Given a non-negative integer
For example:
Given
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
Hint:
A naive implementation of the above process is trivial. Could you come up with other methods?
What are all the possible results?
How do they occur, periodically or randomly?
You may find this Wikipedia article useful.
题目大意:给出一个非负数,将它每位数相加直到变成一个个位数。比如给出“38”,有“3”和“8”两位,相加得到“11”,再把“11”的每位相加,得到2,2即时最终解。
另外题目要求是否可以不使用循环来完成这个操作。
解题思路:这个问题很简单,先求出给出数字的位数个数,再通过递归去反复累加,直到数字小于10。
AC代码:
class Solution {
public:
int addDigits(int num) {
if (num < 10)
return num;
int n = 0;
int sum = 0;
n = (int)log10(num);
while (n >= 0)
{
sum += num / (int)pow(10, n);
num %= (int)pow(10, n);
n--;
}
return addDigits(sum);
}
};
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
2has only one digit, return it.
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
Hint:
A naive implementation of the above process is trivial. Could you come up with other methods?
What are all the possible results?
How do they occur, periodically or randomly?
You may find this Wikipedia article useful.
题目大意:给出一个非负数,将它每位数相加直到变成一个个位数。比如给出“38”,有“3”和“8”两位,相加得到“11”,再把“11”的每位相加,得到2,2即时最终解。
另外题目要求是否可以不使用循环来完成这个操作。
解题思路:这个问题很简单,先求出给出数字的位数个数,再通过递归去反复累加,直到数字小于10。
AC代码:
class Solution {
public:
int addDigits(int num) {
if (num < 10)
return num;
int n = 0;
int sum = 0;
n = (int)log10(num);
while (n >= 0)
{
sum += num / (int)pow(10, n);
num %= (int)pow(10, n);
n--;
}
return addDigits(sum);
}
};
相关文章推荐
- live555的有关代码学习笔记整理
- Eclipse创建Maven web项目jsp表头报错
- 强制使用者第一次登录时修改密码
- 黑马程序员-Java中面向抽象和面向接口设计
- 4解决图片乱跳的问题,preferenceactivity.
- PHP常用正则表达式汇总
- linux之gdb(下)
- github上的安卓开源库汇总
- Java中关键字fianl的归纳
- 回到顶端
- 【转】Linux环境下hadoop安装过程
- Android布局动画---给你的View闪亮登场
- Java泛型Type
- getPath()与getAbsolutePath()的区别
- Trie树和其它数据结构的比较
- linux之gdb(上)
- IOS开发——多线程
- Xcode菜单功能中文翻译
- 下拉刷新ScrollView
- JSON--List集合转换成JSON对象