add digits
报错
Line 14: Char 20: runtime error: signed integer overflow: 2147483640 + 8 cannot be represented in type ‘int’ (solution.cpp)
public:
int addDigits(int num) {
int sum=0;
int item=0;
int i=1;
while(num>=10)
{
sum=0;
while(i!=0)
{
i=num/10;
item=num%10;
sum=sum+item;//这里报错
}
num=sum;
i=1;
}
return num;
}
};
报错是因为!在第二个while循环中num的值一值没有变化所以一直在增加,要笑死了真的是。
正常
class Solution {
public:
int addDigits(int num) {
int sum=0;
int item=0;
while(num>=10)
{
sum=0;
while(num!=0)//把num的值更改就没有问题了哈哈
{
item=num%10;
sum=sum+item;
num=num/10;
}
num=sum;
}
return num;
}
};
对9取余
reference:https://brilliant.org/wiki/digital-root/
一个数的digital root等于这个数除以9的余数;
如果这个数是9的倍数,digital root等于9;
如果这个数是0,digital root等于0;
class Solution {
public:
int addDigits(int num) {
if(num==0) return 0;//注意这条和下一条的顺序
if(num%9==0)return 9;
return num%9;
}
};
最后
以上就是殷勤蜜蜂最近收集整理的关于leetcode258add digits的全部内容,更多相关leetcode258add内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复