给一个非负整数 num
,反复添加所有的数字,直到结果只有一个数字。
例如:
设定 num = 38
,过程就像: 3 + 8 = 11
, 1 + 1 = 2
。 由于 2
只有1个数字,所以返回它。
进阶:
你可以不用任何的循环或者递归算法,在 O(1) 的时间内解决这个问题么?
贡献者:
特别感谢 @jianchao.li.fighter 用于添加此问题并创建所有测试用例。
class Solution {
public:
void helper(int num,int& res,vector<int> data)
{
data.clear();
while(num)
{
data.push_back(num%10);
num /= 10;
}
for(int i=0;i<data.size();i++)
{
num += data[i];
}
if(num/10 == 0)
{
res = num;
return;
}
else
{
helper(num,res,data);
}
}
int addDigits(int num) {
int res;
vector<int> data;
helper(num,res,data);
return res;
}
};