Combinations of adding operators and parentheses

combinations of operators and parentheses

DFS (Depth first search) with memoization has been introduced in the post of word break using memoization. It uses one of dynamic programming technique “memoization” to save previous results and used for the following recursive steps. This will avoid overlapping and improve complexity. This interview question is another example to …

Continue reading

Get suggested friends (2 solutions) – code

suggested friends in java

When you are asked to design the data structures for social network, normally the answer is graph. In the graph, We can use DFS or BFS to find the connections between people. Alternatively, we can also use Union find to group the people by their connections. Here we provide solutions …

Continue reading

Find Least common set with union find – code

least common set with union find

When we have number of sets, and need to group them into joint and disjoint-sets, union–find is the algorithm to go. This question is one step further, we need to find least common set with union find. What is union find? Union-find is to stores data in non-overlapping sets (ie …

Continue reading

Spell autocorrect with edit distance – Code


Google provides a powerful spell correct for validating the keywords we type into the input text box. It checks against a dictionary. If it doesn’t find the keyword in the dictionary, it suggests a most likely replacement. To do this it associates with every word in the dictionary a frequency, …

Continue reading

Monarchy succession order – code

royal succession order

Monarchy succession order is also known as The line of succession to the British throne. The succession to the British throne is determined by descent, sex, legitimacy, and religion. Under common law, the Crown is inherited by a sovereign’s children or by a childless sovereign’s nearest collateral line. The basis …

Continue reading

Shortest path and 2nd shortest path using Dijkstra – code

shortest path using Dijkstra java

What is Dijkstra’s algorithm? Dijkstra’s algorithm is an algorithm to find the shortest paths between vertices in a graph. It uses greedy technique by picking the un-visited vertex with the lowest distance. When all vertices have been evaluated, the result is the shortest path. Find 2nd shortest path is a …

Continue reading

Autocomplete with trie – Code

Autocomplete with trie java

Autocomplete is a feature that search box returns the suggestions based on what you have typed. Autocomplete with trie provides an implementation of auto-complete by using data structure trie. What is trie? A trie is a tree-like data structure in which every node stores a character. After building the trie, …

Continue reading