概述
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 digits所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复