Skip to content

Latest commit

 

History

History
58 lines (41 loc) · 1.41 KB

0258._add_digits.md

File metadata and controls

58 lines (41 loc) · 1.41 KB

Navigation

Links

  1. https://leetcode.com/problems/add-digits
  2. https://leetcode-cn.com/problems/add-digits/

Solution 1 迭代

class Solution:
    def addDigits(self, num):
        num = str(num)

        while(len(num)>1):
            tmp = 0
            for a in num:
                tmp += int(a)

            tmp = str(tmp)
            num = tmp

        return int(num)

Solution 2 对10取余

class Solution:
    def addDigits(self, num):

        while num >= 10:
            num = num // 10 + num % 10

        return num

Solution 3 对9取余

O(1) 数学推理:设某个数字的字符串表示为'abc',则这个数字代表a100 + b10 + c,转换后成为a + b + c,可见每次转换相当于把原数字减去a99 + b9。 只要高于个位的位置上有数字,算法就会减去一个小于原数字的9的倍数,这就相当于数字 % 9。而9本身就没有十位,因此需要考虑原数字是 0 或 9 的倍数的特殊情况

class Solution:
    def addDigits(self, num):
        if num > 9:
            num = num % 9
            
            if num == 0:
                return 9
            
        return num