Leetcode基础刷题之PHP解析(258. Add Digits)
2019-4-16 星期二 开始吧
上一题链接 Leetcode基础刷题之PHP解析(257. Binary Tree Paths)
题目描述
求给定一个非负整数,相加各个位上的数,直到值剩下一位返回。
题目分析
如果不去找到规律的话用迭代或者递归。
/** * @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;
}
Github整理地址:https://github.com/wuqinqiang/leetcode-php
No Comments