LeetCode:258(Python)—— 各位相加(简单)

各位相加

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

输入: num = 38
输出: 2 

输入: num = 0
输出: 0

方法一:字符串+循环

思路:首先把 int 转为 str,然后对字符串进行循环相加,设定好边界条件判断输出即可。

# 字符串+循环
# 首先把 int 转为 str,然后对字符串进行循环相加,
# 设定好边界条件判断输出即可。
class Solution:
    def addDigits(self, num: int) -> int:
        num_s = str(num)
        n = len(num_s)
        ans = 0
        while n > 1:
            for i in range(n):
                ans += int(num_s[i])
            num = ans
            num_s = str(num)
            n = len(num_s)
            ans = 0
        if n == 1:
            return num
        return ans

方法二:列表+循环

思路:思路和上面基本一致,不同在于用列表作为容器。

# 列表+循环
# 思路和上面基本一致,不同在于用列表作为容器。
class Solution:
    def addDigits(self, num: int) -> int:
        num_list = list(str(num))
        n = len(num_list)
        ans = 0
        while n > 1:
            ans += sum([int(i) for i in num_list])
            num = ans
            num_list = list(str(num))
            n = len(num_list)
            ans = 0
        if n == 1:
            return num
        return ans

方法三:取余

思路:不借助额外的空间,每次取 10 的余数,循环结束即可。

# 取余
# 不借助额外的空间,每次取10的余数,循环结束即可。
class Solution:
    def addDigits(self, num: int) -> int:
        while num >= 10:
            ans = 0
            while num:
                ans += num % 10
                num //= 10
            num = ans
        return num

方法四:数学

思路:找到数学规律,即判断除 9 的余数 +1 即可。

# 数学
# 找到数学规律,即判断除9的余数 +1 即可。
class Solution:
    def addDigits(self, num: int) -> int:
        return (num - 1) % 9 + 1 if num else 0

总结

这些数学方法我纹胳膊上,面试官问到我就把袖子撸起来。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值