最近在做leetcode上面的题目(官网网址:https://leetcode.com/),记录下自己的思路。
本题网址:https://leetcode.com/problems/add-digits/
题目:
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),因此我们不能采用循环的办法,只能一次性得到答案。通过观察数的规律得知最终的结果的模9的结果。
答案如下:
public class Solution {
public int addDigits(int num) {
if (num == 0)
return 0;
int result = num % 9;
if (result == 0)
result = 9;
return result;
}
}