258Add Digits - LeetCode

来源:互联网 发布:史蒂夫弗朗西斯数据 编辑:程序博客网 时间:2024/05/01 21:31

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?

1、递归

class Solution {public:    int addDigits(int num) {        if(num>=0&&num<10) return num;        int result=0;        while(num){            result+=num%10;            num/=10;        }        return  addDigits(result);    }};
2、循环
class Solution {public:    int addDigits(int num) {        if(num<0) return 0;        int result=0;        while(num>=10){            result=0;            while(num!=0){                result+=num%10;                num/=10;            }            num=result;        }        return num;    }};

3、观察规律,以9为循环

class Solution {public:    int addDigits(int num) {       return num<=0?0:num%9?num%9:9;    }};




0 0
原创粉丝点击