如何从Leetcode理解快乐数问题解决方案的空间复杂性

时间:2019-12-05 14:31:07

标签: python hashset space-complexity

对于Happy Number Question from Leet code的一种解决方案,我在理解空间复杂度分析时遇到一些困难,由于对复杂度分析有疑问,我用粗体标记并非常感谢您的建议

这是问题:

链接:https://leetcode.com/problems/happy-number/

问题:

  

编写一种算法来确定数字是否“幸福”。一个快乐的数字   是由以下过程定义的数字:以任何数字开头   正整数,用数字的平方和代替数字   位数,然后重复该过程,直到数字等于1(   将会停留),否则它会在不包含1的循环中无限循环。   那些以1结尾的数字是快乐数字。

示例:

输入:19

输出:true

说明:

1 ^ 2(1的平方)+ 9 ^ 2 = 82

8 ^ 2 + 2 ^ 2 = 68

6 ^ 2 + 8 ^ 2 = 100

1 ^ 2 + 0 ^ 2 + 0 ^ 2 = 1

代码如下:

class Solution(object):
    def isHappy(self, n):
        #getnext function will compute the sum of square of each digit of n
        def getnext(n):
            totalsum = 0
            while n>0:
                n,v = divmod(n,10)
                totalsum+=v**2
            return totalsum
        #we declare seen as a set to track the number we already visited
        seen = set()
        #we stop checking if: either the number reaches one or the number was visited #already(ex.a cycle)
        while n!=1 and (n not in seen):
            seen.add(n)
            n = getnext(n)
        return n==1

注意:如果需要解释代码的工作原理,请随时告诉我

解决方案说空间复杂度是logN,有人可以给我一些建议的原因吗?

0 个答案:

没有答案