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 = 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?

一:

class Solution {
public:
    int addDigits(int num)
    {
        int n;
        do
        {
             n=0;
            while(num>0)
            {
                n += num%10;
                num = num/10;
            }
            num=n;

        }while(n>=10);

           return n;
    }
};

虽然简单,但写的时候还是遇到好多问题,因为N的问题,所以没法用while循环,只能用do-whiled

二:


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

http://blog.csdn.net/sbitswc/article/details/47975581

其中 num = (num/10)+num%10; 还是不好理解的

三:

http://my.oschina.net/Tsybius2014/blog/497645

这个是符合题意的,只有o(1)的复杂度,膜拜大神

你可能感兴趣的:(LeetCode,leectode)