LeetCode--Add Digits
题目:
Given a non-negative integer方法一:num
, repeatedly add all its digits until the result has only one digit. For example: Givennum = 38
, the process is like:3 + 8 = 11
,1 + 1 = 2
. Since2
has only one digit, return it. Follow up: Could you do it without any loop/recursion in O(1) runtime?
int addDigits(int num) { int sum = 0; while(num > 0) { sum += num%10; num /= 10; } if(sum < 10) { return sum; } else { addDigits(sum); } }while循环中将一个数的每一位加到sum中,每次都是将个位加上去,再除以10.
再判断sum是否小于10,大于10则递归.
方法二:
int addDigits(int num) { if(num == 0) return 0; else if(num%9 == 0) return 9; else return num%9; }如果能看出 最后的结果就是对9的余数,则只用O(1)的时间复杂度