1. 程式人生 > >[LeetCode 258] Add Digits

[LeetCode 258] 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 = 111 + 1 = 2. Since 2 has only one digit, return it.

Follow up:

Could you do it without any loop/recursion in O(1) runtime?

Solution:

1. 逐位相加直到小於10

public int addDigits(int num) {
        while(num>=10){
            num = (num/10)+num%10;
        }
        return num;
    }

2.

通過輸入距離來發現規律

123456789 10 11 12 13 14 15

123456789 1 2 3 4 5 6

public int addDigits(int num) {
        return 1 + (num-1)%9;
    }