Happy Number

In this tutorial, I am going to discuss a very interesting problem to determine if a number is happy or not.

Given a number n, we have to write a code to check whether a number is happy or not.

Happy Number

Take any positive integer, and replace the number with the sum of the squares of its digits. Repeat the process until the number equals 1 (where it will stay). If it’s equal to 1 then it’s a happy number. If it loops endlessly in a cycle which does not include 1 then it’s not a happy number.

Those numbers for which this process ends in 1 are happy numbers.

For Example –

Example 1:

Input : 19, Output: true

Step 1: 1^2 + 9^2 = 82

Step 2: 8^2 + 2^2 = 68

Step 3: 6^2 + 8^2 = 100

Step 4: 1^2 + 0^2 + 0^2 = 1 (The number ends at 1, So it’s a happy number).

Example 2:

Input  :  20, Output :  false

Step 1: 2^2 + 0^2 = 4

Step 2: 4^2  = 16

Step 3: 1^2 + 6^2 = 37

Step 4: 3^2 + 7^2 = 58

Step 5: 5^2 + 8^2 = 89

Step 6: 8^2 + 9^2 = 145

Step 7: 1^2 + 4^2 + 5^2 = 42

Step 8: 4^2 + 2^2 = 20 (Loop occurs)

Insert Delete GetRandom o(1) Solution

In this problem, We have to design a data structure that supports Insert, Delete, and GetRandom in average O(1) time.

OR

Design a data structure that supports insert, delete, and getRandom in constant time O(1).

insert(value): Inserts an item value to the set if it’s not present.

remove(value): Removes an item value from the set if present.

getRandom(): Returns a random element from current set of elements. Each element must have the same probability of being returned.

Number of Islands

In this tutorial, I am going to discuss a very famous interview problem. How to count the number of islands.

Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically.

You may assume all four edges of the grid are surrounded by water.