zoukankan      html  css  js  c++  java
  • [leetcode][math] 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?

    Hint:

    1. A naive implementation of the above process is trivial. Could you come up with other methods?

    2. What are all the possible results?
    3. How do they occur, periodically or randomly?
    class Solution {
    public:
        int addDigits(int num) {
            int res = 0;
            bool doneFlag = false;
            while(1){
                res = 0;
                while(num > 0){
                    res += num%10;
                    num /= 10;
                }
                if(res/10 == 0) break;
                num = res;
            }
            return res;
        }
    };

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


  • 相关阅读:
    HTTP基础
    DHCP(六)
    DOM备忘录
    正则表达式备忘录
    Function与Object的关系
    模块模式浅析
    视频下载
    JSP基础点滴
    迭代输出总结
    中文乱码问题的解决途径
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7060614.html
Copyright © 2011-2022 走看看