[leetcode]Add Digits

作者:luozhipeng   发表日期:2015-8-23  浏览:1,891次

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?

adddigit

 

题意:给出一个非负整数,把它所有位加起来,直到它的结果只有一位为止。(ans < 10)

 

输入:一个非负整数。

返回:n < 10。

 

思路:1.简单循环处理。

      2.通过前面的一些项找规律,发现每9个数就循环结果,由此可推断答案。

 

方法一:


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

方法二:

class Solution {
public:
    int addDigits(int num) {
        return num == 0? 0:(num%9 == 0?9:num%9);
    }
};

 

标签:

本文固定链接: http://www.luozhipeng.com/?p=469
转载请注明: luozhipeng 2015-8-23 于 罗志鹏的BLOG 发表

上一篇: :下一篇
返回顶部