(leetcode)Add Digits
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
For example:
Given num = 38, the process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return it.
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
1 class Solution { 2 public: 3 int addDigits(int num) { 4 int ans = num; 5 // while(ans!=2) 6 // { 7 while(1) 8 { 9 if(ans < 10) return ans; 10 num = ans; 11 ans = 0; 12 while(num != 0) 13 { 14 ans += num%10; 15 num /= 10; 16 } 17 } 18 } 19 };
O(1)方法
观察如下输入:
输入:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
输出:1,2,3,4,5,6,7,8,9,1 , 2 , 3 , 4 , 5 , 6, 7 , 8 , 9 , 1 , 2
可以看到返回的值就是(num-1)%9+1

浙公网安备 33010602011771号