传统的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;
}
};
网友评论