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

示例 1:

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

示例 1:

输入: num = 0
输出: 0

提示:

  • 0 <= num <= 2^31 - 1

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

class Solution:
    def addDigits(self, num: int) -> int:
        while num >= 10:
            result = 0
            while num > 0:
                result += num % 10
                num //= 10
            num = result
        return num
class Solution {
    public int addDigits(int num) {
        while(num >= 10)
        {
            int result = 0;
            while(num > 0)
            {
                result += num%10;
                num /= 10;
            }
            num = result;
        }
        return num;
    }
}

2.数学
python:

class Solution:
    def addDigits(self, num: int) -> int:
        if num == 0:
            return 0
        elif num % 9 == 0:
            return 9
        else:
            return num%9
最后修改日期: 2022年3月3日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。