leetcodeブラシ問題、まとめ、記録、メモ258

1034 ワード

leetcode258
Add Digits
 
Given a non-negative integer  num , repeatedly add all its digits until the result has only one digit.
For example:
Given  num = 38 , the process is like:  3 + 8 = 111 + 1 = 2 . Since  2  has only one digit, return it.
Follow up: Could you do it without any loop/recursion in O(1) runtime? その実用サイクルは比較的簡単で,これ以上述べない.
class Solution {
public:
    int addDigits(int num) {
        int result;
        result = num;
        while (true) {
            if (result < 10) {
                return result;
            }
            num = result;
            result = 0;
            while (num) {
                result += num % 10;
                num /= 10;
            }
        }
    }
};

その後、他人の書き方や、タイトルのウィキペディアの説明を見て、よくわかりませんでしたが、公式を覚えました.
class Solution {
public:
    int addDigits(int num) {
        return 1 + (num -1 )%9;
    }
};