# 10 STEPS TO TACKLE ANY ALGORITHMIC INTERVIEW PROBLEM

By: Saurav

2017-12-28 05:04:00 UTC

This is a simple 10 step process to follow to solve any programming interview problem in a pressure cooker situation. Train your mind to remember this for any question and then it will do it automatically, especially when its game time!

Step 1:Clarify
Questions to ask at this stage:
1. Ask constraints (Is there any constraints on space, time, input format etc)
2. if its an array, ask if it's sorted (if it is, binary search can be a possibility)
3. Think and ask for edge cases

Step 2: Write 5 or more test cases (For few problems, writing more tests helps)
Write tests for empty input, large input, two normal size input, and other edge cases inputs and give 5 minutes on test analysis.

Step 3: Use one of the two normal size input and write it in the middle of whiteboard

Step 4:Find Pattern:
After writing one of the test cases in front of you, go through this questionnaire to know what sort of problem is it:

1. Is the question of inputs where input Is sorted? -> Think of using binary search

2. Is the question about some pattern among indexes of array/string? -> Its a math problem, try finding an equation between elements.

> Like palindrome is where ith element and (n-1-i)th elements are equal,
> sum of difference of diagonals is where you have to find difference of input_array[i][j] and input_array[n-1-i][j],,
> swapping
If you can find a pattern or equation, its is a math problem

3. Is the question of a repetitive pattern /overlapping elements /common elements? -> Think Hashing and then Dynamic Programming
> Find two repetitive numbers in array
> Fibonacci
> Longest common continuous sub-string between two strings

4. Is it a searching/sorting problem? -> Binary search, sorting algorithms, object sorting
> Sort list of candidates with respect to the number of votes they got
> Search in a sorted array

5. Is it asking to find greatest/least of the numbers? -> Think Heap (Takes O(n) time for getting the max)
> Max k elements
> Winner of an election
> Min k elements
> Most frequent n-words.

6. is it a recursion problem?
> Palindrome of a string

7. is there any basic data structure involved?
hash -> Repeat, Search, Exists kind of problems
heap -> finding max, min
stack -> performing LIFO
queue -> FIFO
LinkList problems? > Find if cycle in LL, Doubly LL etc
tree problem ? > Lowest common ancestor etc

9. Is this a word related problem? - > Trie
> prefix based search
> word problem
> dictionary problem
> validations of words from dictionary
> Lexicographic ordering of words
> Find valid words from scrabble game
> Valid words from twitter tweets

10. Is this a graph traversal problem? -> Think BFS and then DFS
> Island 1/0 problem
> shorted path problems