[Python LeetCode]258. 各位相加(yangyang)

    xiaoxiao2022-07-07  159

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

    示例:

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

    思路: 模9 A0A1A2…An=A0(10^n)+A1(10*(n-1))+…+An(1) =A0(10^n -1 +1)+A1(10*(n-1) -1 +1)+…+An(1 -1 +1) 其中的n次方项-1后取模9均为0,只剩1 A0A1A2…An%9=A0+A1+…+An 所以模9正好为各个数位之和 需要考虑特殊情况,9的倍数,结果为9

    class Solution: def addDigits(self, num: int) -> int: #模9 #特殊情况9的倍数 if num<9: return num if num%9==0: return 9 while num>9: num=num%9 return num
    最新回复(0)