math and geometry July 28, 2022

Happy number

Time O(n) Space O(n) Open original problem

We will calculate the next number, and memoize it. If it's already in the memo, that means we have a cycle, then we return false. Otherwise the number will end up on to be 1. Then we break the loop and return true.

class Solution:
    def isHappy(self, n: int) -> bool:
        memo = set()
        while n != 1:
            n = sum(int(i) ** 2 for i in str(n))
            if n in memo:
                return False
            memo.add(n)
        return True

Time Complexity: O(n)
Space Complexity: O(n)