Leetcode基础刷题之PHP解析(258. Add Digits)


2019-4-16 期二  

 Leetcode基础刷题之PHP解析(257. Binary Tree Paths)

597b91848e58e3a82d4931a4dc383552.png

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

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

 /**
     * @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)时间内解出,并且不使用循环或者递归。所以我们需要找出规律。

5c7b3da861a9fea1f7cb49814b48cc36.png

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

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

Github整理地址:https://github.com/wuqinqiang/leetcode-php



Vote Vote Cancel Collect Collect Cancel

<< 上一篇: Leetcode基础刷题之PHP解析(257. Binary Tree Paths)

>> 下一篇: Leetcode PHP题解--D34 977. Squares of a Sorted Array