2015年9月21日 星期一

[note] leetcode - add digits

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)呢?
數字根- 維基百科
可以透過以下公式來達到這個需求:


沒有留言:

張貼留言