leetcode刷题,总结,记录,备忘 258

leetcode258

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?

其实用循环比较简单,不再赘述。

class Solution {
public:
    int addDigits(int num) {
        int result;
        result = num;
        while (true) {
            if (result < 10) {
                return result;
            }
            num = result;
            result = 0;
            while (num) {
                result += num % 10;
                num /= 10;
            }
        }
    }
};

之后看了别人的写法,以及题目中维基百科的讲解,不是很懂,,但是把公式记住了。

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



你可能感兴趣的:(leetcode刷题,总结,记录,备忘 258)