给一个非负整数 num,反复添加所有的数字,直到结果只有一个数字。
例如:
设定 num = 38,过程就像: 3 + 8 = 11, 1 + 1 = 2。 由于 2 只有1个数字,所以返回它。
进阶:
你可以不用任何的循环或者递归算法,在 O(1) 的时间内解决这个问题么?
详见:https://leetcode.com/problems/add-digits/description/
Java实现:
class Solution { public int addDigits(int num) { while(num/10>0){ int sum=0; while(num>0){ sum+=num%10; num/=10; } num=sum; } return num; } }
方法二:
class Solution { public int addDigits(int num) { return (num-1)%9+1; } }
C++实现:
方法一:
class Solution { public: int addDigits(int num) { while(num/10>0) { int sum=0; while(num>0) { sum+=num%10; num/=10; } num=sum; } return num; } };
方法二:
class Solution { public: int addDigits(int num) { return (num-1)%9+1; } };
参考:https://www.cnblogs.com/grandyang/p/4741028.html