zoukankan      html  css  js  c++  java
  • LeetCode 258 Add Digits(数字相加,数字根)

    翻译

    给定一个非负整型数字,反复相加其全部的数字直到最后的结果仅仅有一位数。
    
    比如:
    
    给定sum = 38,这个过程就像是:3 + 8 = 11。1 + 1 = 2。由于2仅仅有一位数。所以返回它。
    
    紧接着:
    
    你能够不用循环或递归在O(1)时间内完毕它吗?

    原文

    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?

    分析

    事实上我并不会写,循环和递归都不能用……我还能怎么办呐。

    然后看了LeetCode上给的提示。看了维基百科的一篇文章:Digital root。

    这里写图片描写叙述

    有了这个的话,就非常easy了。详细这个公式的细节,大家自己參看维基吧,由于篇幅过长就不翻译了。

    代码

    class Solution {
    public:
        int floor(int x) {
            return (x - 1) / 9;
        }
        int addDigits(int num) {
            return num - 9 * floor(num);
        }
    };
  • 相关阅读:
    寄存器基础知识
    基础知识
    架构
    Mac下Apache服务器的初步搭建
    ios字体简单设定
    xcode中自定义log打印
    jQuery打印插件
    ionic3生命周期钩子
    ES5 数组方法map
    $compile的妙用
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7007219.html
Copyright © 2011-2022 走看看