LeetCode--Add Digits

来源:互联网 发布:新顶级域名有哪些 编辑:程序博客网 时间:2024/06/15 06:57

题目:

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 = 111 + 1 = 2. Since 2 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)的时间复杂度


0 0
原创粉丝点击