Run 3 times and the best one is 48ms 83%
- Conversion from int to list of digits is done by keeps divmod the
number by 10.
- Every time after the sum of squares, make a check to see if we got number 1. If so, the original number is a happy number. if not, check if the result has been seen before. Getting a seen number means we are in a loop thus we return
- if we get a un-seen result, we just save it to the seen list and
apply the function recursively to it.
class Solution(object): def __init__(self): self.seen =  def isHappy(self, n): """ :type n: int :rtype: bool """ digi =  while n > 9: n, r = divmod(n, 10) if r != 0: digi.append(r) digi.append(n) new_n = sum(map(lambda x: x**2, digi)) if new_n == 1: return True elif new_n in self.seen: return False else: self.seen.append(new_n) return self.isHappy(new_n)