Add Digits
原題目給定一個非負整數,不斷重複的累加每一個位元至變成個位數位元為止。
舉例來說:
num = 38 ,則:
3 + 8 = 11。
1 + 1 = 2。 (到此回傳)
以下為程式碼:
int addDigits(int num) { int numSum = 0; while(num != 0) { numSum += num % 10; num = num / 10; } if(numSum >= 10) return addDigits(numSum); else return numSum; }那麼,如果要使之時間複雜度為O(1)呢?
數字根- 維基百科
可以透過以下公式來達到這個需求:
沒有留言:
張貼留言