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;
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容