LeetCode 258 [Add Digits]

作者: Jason_Yuan | 来源:发表于2016-07-31 09:05 被阅读27次

    原题

    给出一个非负整数,重复计算为一位的和,直到这个和变为一位数

    样例
    给出 num = 38,过程即:
    3 + 8 = 11
    1 + 1 = 2
    因为2只有一位,所以返回2

    解题思路

    • 方法一:安装题目要求进行计算即可
    • 方法二:同样是写出一些相应的结果,找规律
    1    1
    2    2
    3    3
    4    4
    5    5
    6    6
    7    7
    8    8    
    9    9    
    10    1
    11    2
    12    3    
    13    4
    14    5
    15    6
    16    7
    17    8
    18    9
    19    1
    20    2
    

    我们可以得出规律,每9个一次循环,但需要注意:9, 18...对9取余就是0了,为了得到其本身,我们就用(n-1)%9+1这个表达式来包括所有的情况

    完整代码

    # method 1
    class Solution(object):
        def addDigits(self, num):
            """
            :type num: int
            :rtype: int
            """
            res = self.helper(num)
            while res > 9:
                res = self.helper(res)
            return res
            
        def helper(self, num):
            sum = 0
            while num != 0:
                sum += num % 10
                num = num / 10
            return sum
    
    # method 2
    class Solution(object):
        def addDigits(self, num):
            """
            :type num: int
            :rtype: int
            """
            if num == 0:
                return num
            return (num - 1) % 9 + 1
    

    相关文章

      网友评论

        本文标题:LeetCode 258 [Add Digits]

        本文链接:https://www.haomeiwen.com/subject/jobtsttx.html