LeetCode:Add Digits(各位相加)

题目

这里写图片描述

思路

一开始想的比较简单,递归求每次的各位数字之和,直到和小于10。然后考虑了O(1)复杂度下的方法,在循环求和时,每次都将求和结果拆成当前位和进位两个数,这样可以保证始终求和都是个位数。

代码

递归:

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

O(1)复杂度:

class Solution {
public:
    int addDigits(int num) {
        int dis=0;
        while(num)
        {
            int temp=dis;
            temp+=num%10;
            dis=temp/10+temp%10;
            num/=10;
        }
        return dis;
    }
};

猜你喜欢

转载自blog.csdn.net/lin453701006/article/details/80854695