题目:给定一个非负整数num,重复加它各个位数上的数字,直到最后得到的是一位数;返回这个一位数。
example:num=38,步骤是3+8=11,1=1=2,返回2。
要求:无循环/递归,在O(1)时间
Could you do it without any loop/recursion in O(1) runtime?
本题知识点:digital root
引出名词:
digital root
{0,1,2,3,4,5,6,7,8,9}
The Big Cheese
Sending and Receiving Cards
9,18,27,36,45,54...........9的倍数的digital root都是9
在一串数字中去除一个9,以及加起来等于9的数字,最后得到的digital root不变。
class Solution {
public:
int addDigits(int num) {
return 1+(num-1)%9;
}
};