LeetCode 258 [Add Digits]

原题

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

样例
给出 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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容