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

 

分析:

需要时间复杂度是O(1),所以需要分析规律

经过计算1~30,得出结论:结果在1~9之间,提交代码为:

    public static int addDigits(int num) {
        int intRsult  = num%9;
        if(intRsult == 0){
            intRsult =9;
        }
        return intRsult;
    }

但是结果报错,发现遗忘了输入为0的情况,修改代码为:

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

 

posted @ 2015-09-02 22:39  savageclc26  阅读(124)  评论(0编辑  收藏  举报