您的位置:首页 > 其它

[leetcode][math] Add Digits

2015-08-16 14:31 363 查看
题目:

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?

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?

class Solution {
public:
int addDigits(int num) {
int res = 0;
bool doneFlag = false;
while(1){
res = 0;
while(num > 0){
res += num%10;
num /= 10;
}
if(res/10 == 0) break;
num = res;
}
return res;
}
};


class Solution {
public:
int addDigits(int num) {
if(num == 0) return 0;
if(num % 9 == 0) return 9;
return num%9;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: