题目:
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?
分析:
需要时间复杂度是O(1),所以需要分析规律
经过计算1~30,得出结论:结果在1~9之间,提交代码为:
public static int addDigits(int num) { int intRsult = num%9; if(intRsult == 0){ intRsult =9; } return intRsult; }
但是结果报错,发现遗忘了输入为0的情况,修改代码为:
public: int addDigits(int num) { return 1 + (num-1)%9; } };