Add Digits数字各个位数相加

来源:互联网 发布:mac 装google chrome 编辑:程序博客网 时间:2024/05/07 18:37

在做leetcode的题目,难度虽然是easy的,但是应该考验的是算法的复杂度和时间,我总是用最费时的,遍历循环的方法去解决。

像这道题目:num = 38, the process is like: 3 + 8 = 111 + 1 = 2. Since 2 has only one digit, return it.

我用最常见的方法,就是按照题目上的先把各个位数相加,在判断递归。

最好的方法是:

N = n1 + n2*10 + n3*10*10....

M = n1 + n2 + n3...

有个规律:1%9 = 1;10%9 = 1;100%9 = 1,所以把等式两边都%9,N%9 = M。

由于9%9=0,所以(9-1)%9+1,所有的N都成立。这道题目就很简单,不需要遍历不需要循环,只要return (num-1)%9+1 就行了。

0 0