LeetCode-258. 各位相加

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

  1. 将每一位进行相加,判断是否是一个数字,不是就继续做相加,这样会有两个循环,耗费时间,是比较简单的思路,需要继续优化。
class Solution:
    def addDigits(self, num: int) -> int:
        if num == 0:
            return 0
        elif num < 10:
            return num
        else:
            while num >= 10:
                total = 0
                list_num = [int(x) for x in str(num)]
                for i in range(len(list_num)):
                    total += int(list_num[i])
                num = total
            return num

在这里插入图片描述

  1. 只需要一个循环就好了
class Solution:
    def addDigits(self, num: int) -> int:
        while num >= 10:
            num = sum(list(map(int, list(str(num)))))
        return num

在这里插入图片描述
3. 完全数学思想,直接看代码吧,我也没想到
在这里插入图片描述

posted @ 2022-03-03 08:48  小Aer  阅读(2)  评论(0编辑  收藏  举报  来源