题目简介
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?
自己的解法
看了题目之后,觉得如果用循环或者递归会很好做。但是题目要求我们的时间复杂度为常数时间,= =自己没有思考出来。
Hot解法
- public class Solution {
public int addDigits(int num){
return 1+(num-1)%9;
}
}
自己去找了一下相关的资料和Hot解法,才明白规律是这样的。
if(num==0) return 0;
else if(num%9==0) return 9;
else return num%9;
总结一下就是
return 1+(num-1)%9;