258.[LeetCode]Add Digits

1738 단어 LeetCode

제목


너에게 숫자를 하나 주고, 모든 위치의 숫자를 더한 다음, 만약 9보다 크면, 결과가 한 자릿수가 될 때까지 계속 더한다

차례로 돌아가다


차례차례 돌아가는 것은 주로 문제의 뜻을 모의하는 과정이다
class Solution {
public:
    int addDigits(int num) {
        int sum = 0;
        while (num > 0) {
            sum += num%10;
            num /= 10;
        }
        if(sum < 10) return sum;
        else addDigits(sum);
    }
};

비귀속

class Solution {
public:
    int addDigits(int num) {
         return (num - 1) % 9 + 1;
    }
};

非递归的解法很简单,网上有两种求解的思路,一种是找规律,也就是列出从0到19,发现是有循环的。
还有一种解释我觉得比较恰当一点,就是出自北风其人的解释
不过大部分人还是用了 找规律 方法,其实在没有主意的时候,找找规律也是一个方向

좋은 웹페이지 즐겨찾기