add digits
报错
Line 14: Char 20: runtime error: signed integer overflow: 2147483640 + 8 cannot be represented in type ‘int’ (solution.cpp)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21public: 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的值一值没有变化所以一直在增加,要笑死了真的是。
正常
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20class 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;
复制代码
1
2
3
4
5
6
7
8
9class Solution { public: int addDigits(int num) { if(num==0) return 0;//注意这条和下一条的顺序 if(num%9==0)return 9; return num%9; } };
最后
以上就是殷勤蜜蜂最近收集整理的关于leetcode258add digits的全部内容,更多相关leetcode258add内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复