258. Add Digits

傳統的loop方法

class Solution {
    public int addDigits(int num) {
        while(num/10!=0)
        {
            int temp =0 ;
            while(num!=0)
            {
                temp+=(num%10);
                num=num/10;
            }
            num=temp;
        }
        return num ;
    }
}

我有點討厭的trick方法: 對于B進制來說 N最后遺留下來的數符合以下規則:
1.如果N=0,遺留下來的數就是0,
2.對于N!=0且N%(B-1)==0的數,遺留下來的數是(B-1).
3對于N!=0且N%(B-1)!=0的數,遺留下來的數是N mod(B-1);

綜上可以寫成:remian(n) = 1 + (N - 1) % (B-1);

對于十進制,有:

class Solution {
public:
    int addDigits(int num) {
        return 1 + (num - 1) % 9;
    }
};
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容