在做leetcode的题目,难度虽然是easy的,但是应该考验的是算法的复杂度和时间,我总是用最费时的,遍历循环的方法去解决。
像这道题目:num = 38
, the process is like: 3 + 8 = 11
, 1 + 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 就行了。