Write an algorithm to determine if a number is “happy”.

A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.

**Example: **

Input:19Output:trueExplanation:1^{2}+ 9^{2}= 82 8^{2}+ 2^{2}= 68 6^{2}+ 8^{2}= 100 1^{2}+ 0^{2}+ 0^{2}= 1

## Solution – Efficient approach

public class Solution { public bool IsHappy(int n) { int slow = n, fast = n; do { slow = FindSquareSum(slow); fast = FindSquareSum(FindSquareSum(fast)); }while(slow != fast); return slow == 1; } public int FindSquareSum(int n) { int squareSum = 0; while(n != 0) { squareSum += (n%10) * (n%10); n = n/10; } return squareSum; } }

**Time Complexity : O(n)**

**Space Complexity : O(1)**