Add Digits

https://leetcode.com/problems/add-digits/#/description

好几天没做了,好慌啊。这题的O(1) 方法想了下,最后是先写出循环的方法,然后跑了100 次找规律,发现大概是没10 个数字一组轮回。找到规律了以后凑个映射搞定。

int addDigits(int num) {
    int t = num;
    while (t >= 10) {
        int tt = t;
        int perDigitSum = 0;
        while (tt > 0) {
            int d = tt % 10;
            perDigitSum += d;
            tt /= 10;
        }
        t = perDigitSum;
    }
    
    return t;
}

int addDigits2(int num) {
    if (num == 0) return 0;
    return num % 9 == 0 ? 9 : num % 9;
}

 

posted @ 2017-06-27 23:45  Agentgamer  阅读(103)  评论(0编辑  收藏  举报