美文网首页
LeetCode-各位相加

LeetCode-各位相加

作者: G_dalx | 来源:发表于2018-09-18 21:28 被阅读0次

    给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。

    示例:

    输入: 38
    输出: 2 
    解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
    

    进阶:
    你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?

    思路:
    1.对输入的元素进行判断 S<10? 是的话直接返回S,不是的话进行第二步
    2.在循环中对S的每一位进行求和
    3.return addDigits

    代码:

    class Solution {
        public int addDigits(int num) {
            int temp=0;
            while(num>0){//num>10
                temp+=num%10;
                num=num/10;
             }   
            
            if(temp<10){
                return temp;
            }
            else{
                return addDigits(temp);
            }
            
            
        }
    }
    

    相关文章

      网友评论

          本文标题:LeetCode-各位相加

          本文链接:https://www.haomeiwen.com/subject/ielvnftx.html