Skip to content

Latest commit

 

History

History
59 lines (48 loc) · 1.78 KB

258.md

File metadata and controls

59 lines (48 loc) · 1.78 KB

✏️Leetcode之PHP版题目解析(258. Add Digits)

2019-04-16 吴亲库里 库里的深夜食堂


✏️描述

求给定一个非负整数,相加各个位上的数,直到值剩下一位返回。


✏️题目实例

****

✏️题目分析

如果不去找到规律的话用迭代或者递归。

       /**
            * @param Integer $num
            * @return Integer
            */
           function addDigits($num) {
               if($num<10){
                   return $num;
               }
               $res=0;
               while($num>0){
                   $res +=$num%10;
                   $num /=10;
               }
                return $this->addDigits($res);
           }

上面要求我们在O(n)时间内解出,并且不使用循环或者递归。所以我们需要找出规律。

可以看出每九个一个循环,大于9的就是对9进行求余。但是,如果等于9,那么直接求余就是0,对于能被9整除的数如果我们只是直接求余的话那么必要是错误的,所以最后丧心病狂一句话

 /**
     * @param Integer $num
     * @return Integer
     */
    function addDigits($num) {
     return ($num-1)%9+1;
    }

联系