Solution: Happy Number
Let's solve the Happy Number problem using the Fast and slow pointers pattern.
Statement
Write an algorithm to determine if a number is a happy number.
We use the following process to check if a given number is a happy number:
- Starting with the given number , replace the number with the sum of the squares of its digits.
- Repeat the process until:
- The number equals , which will depict that the given number is a happy number.
- It enters a cycle, which will depict that the given number is not a happy number.
Return TRUE if is a happy number, and FALSE if not.
Constraints
Solution
So far, you have probably brainstormed some approaches and have an idea of how to solve this problem. Let’s explore some of these approaches and figure out which one to follow based on considerations such as time complexity and any implementation constraints.
Naive approach
The brute force approach is to repeatedly calculate the squared sum of digits of the input number and store the computed sum in a hash set. For every calculation, we check if the sum is already present in the set. If yes, we've detected a cycle and should return FALSE. Otherwise, we add it to our hash set and continue further. If our sum converges to
While this approach works well for small numbers, we might have to perform several computations for larger numbers to get the required result. So, it might get infeasible for such cases. The time complexity of this approach is