Happy Number

Problem Summary

What is Being Asked?

(One sentence on the actual task.)

Main Concepts Used

Time & Space Complexity

Code

class Solution:
    def isHappy(self, n: int) -> bool:
        visited = set()
        while n != 1:
            n = self.sumOfSquares(n)
            if n in visited: 
                return False
            visited.add(n)
        return True
    
    def sumOfSquares(self, n) -> int:
        digits = list(str(n))
        result = 0
        for digit in digits:
            digit = int(digit)
            square = digit ** 2
            result += square
        return result

Optimized Code

class Solution:
    def isHappy(self, n: int) -> bool:
        slow, fast = n, self.sumOfSquares(n)

        while slow != fast:
            slow = self.sumOfSquares(slow)
            fast = self.sumOfSquares(self.sumOfSquares(fast))
        
        return fast == 1
    
    def sumOfSquares(self, n) -> int:
        digits = list(str(n))
        result = 0
        for digit in digits:
            digit = int(digit)
            square = digit ** 2
            result += square
        return result

Optimized Time & Space Complexity