唉,做完这道题目后,有种羞愧无比的感觉,果然还是读书太少。。。
什么意思呢?就像这道题目一样,要求你编程计算出从1加到100的结果。于是你用循环从1累加到100,结果为5050。而大家都知道,从数学上的角度来解答,结果就是(a[1]+a[n])* n / 2。
LeetCode上面的这道【Add Digits】题,其实是道数学题。它这个求解的结果,在数学上称为数根。
原题大概意思是这样,给定一个正整数,循环累加它的各位,直到结果为一位数。如 num 是38,计算的过程是 3+8=11,1+1=2,2为一位数,即为结果。而实际上这个结果就是这个数的数根。
一个数的数根,用数学公式来表达就是 f(n) =(n - 1) % 9 + 1,这个公式的证明不难,可以看这里。
最后~还是觉得很惭愧。。。
1 class Solution { 2 public: 3 int addDigits(int num) { 4 return (num -1) % 9 + 1; 5 } 6 };
时间: 2024-10-31 04:28:36