The document introduces an algorithm hierarchy to help organize thinking for coding interviews. It presents 5 levels of algorithms from basic to optimized to big data. For each level it provides examples and discusses complexity. It also emphasizes that coding interviews evaluate additional skills beyond just algorithms like communication. Real interview questions from Amazon are analyzed in terms of the hierarchy. LeetCode is recommended for interview preparation, noting the distribution of question levels.
2. Introduction
ž In most experience of Coding Interview,
we have noticed more and more
interview questions are focusing on
algorithms.
ž To tell whether algorithms are better or
worse, there is complexity BigO to
measure the performance in theory.
ž Today, I would like to introduce
Algorithm Hierarchy to organize thinking
way.
3. Not only Algorithm
ž Remember: Not only is Algorithm one
key part of coding interview, but also
working attitude, communication skills,
big picture thinking and so on are more
considered etc.
4. Algorithm Hierarchy in thought
ž 1. Basic Algorithm
ž 2. Space–time tradeoff
ž 3. Pruning Algorithm
ž 4. Optimized Algorithm
ž 5. Big data Algorithm
ž Remember: As hierarchy is like pyramid,
you would better working more on
foundation then looking forward.
5. 1. Basic Algorithm
ž (completed and easy reading –cy)
ž Recursion, Backtracking, Blind
searching and sorting like DFS, BFS,
merge sort and qsort etc.
6. 2. Space–time tradeoff
ž (completed and fast by additional space
–cy)
ž Iteration, Dynamic Programming, Hash,
Priority queue etc.
7. 3. Pruning Algorithm
ž (completed and fast via shortcuts –cy)
ž Binary search in rotated array, K largest,
Single Linked List cycle detect, Matrix
multiplication etc.
8. 4. Optimized Algorithm
ž (faster and almost completed –cy)
ž Estimated value, Hill climbing, Greedy
Heuristic search like A*, D* etc.
9. 5. Big data Algorithm
ž (fastest and almost completed –cy)
ž Divide and Conquer (Cloud, Cluster)
and Machine learning, (Genetic, Ant
Colony), Artificial intelligence (Alpha-
Beta, MCTS) etc.
10. Example of Algorithm Hierarchy
ž Let me explain hierarchy by calculating
Fibonacci sequence.
ž 0, 1, 1, 2, 3, 5, 8, …
ž Now we need to calculate nTh number
in Fibonacci sequence.
11. Fibonacci sequence (1)
ž 1. Basic Algorithm : Complexity O(n!)
ž long long f1(int n) {
ž return n < 2 ? n : (f1(n-1) + f1(n-2));
ž }
12. Fibonacci sequence (2)
ž 2. Space–time tradeoff : Complexity O(n)
ž long long f2(int n){
ž long long f[2] = {0, 1};
ž while (--n>=1) {
ž f[0]=f[0]+f[1];
ž swap(f[0], f[1]);
ž }
ž return f[n+1];
ž }
13. Fibonacci sequence (3)
ž 3. Probing Algorithm : Complexity O(log
n)
ž long long f3(int n){
ž return (n < 2)? n :
MatrixPower(n-1).m_00; //power of
matrix { {1,1}, {1, 0} }
ž }
15. Fibonacci sequence (5)
ž 5. Big data Algorithm
ž long long f5 (int n){
ž return f[n];
ž }
16. Fibonacci sequence (Output)
ž f1(90) = timeout
ž f2(90) = 2880067194370816120
ž f3(90) = 2880067194370816120
ž f4(90) = 2880067194370824704
ž f5(90) = 2880067194370816120
ž You may see f4(90) is slightly different
because of double-precision, but it
works for n<=70
17. No Recursion
Remember: Don’t use Recursion for large
scale problem, using Iteration instead at
least, especially for graph problems like
tree verify, sum and traversal etc.
18. Algorithm Hierarchy in Interview
ž For Algorithm Hierarchy in Coding
Interview, in my humble opinion, most
Phone interview is on level 1, and most
on-site interview is on level 2-3,
however, you may asking about level
4-5 algorithm.
19. Real Sample: Amazon’s most
asked interview questions
ž (source: geeksquiz.com)
ž 1) K largest elements from a big file or array.
ž 2) Find a triplet a, b, c such that a2 = b2 + c2. Variations of this problem like find
a triplet with sum equal to 0. Find a pair with given sum. All such questions are
efficiently solved using hashing.
ž 3) Binary tree traversal questions like left view, right view, top view, bottom view,
maximum of a level, minimum of a level, children sum property, diameter etc.
ž 4) Convert a BST into a DLL and DLL to BST in place.
ž 5) Vertical traversal of a Binary Tree.
ž 6) Lowest Common ancestor in a Binary Search Tree and Binary Tree.
ž 7) Implement a stack with push(), pop() and min() in O(1) time.
ž 8) Reverse a linked list in groups of size k.
ž 9) Given two numbers represented by two linked lists, write a function that
returns sum list.
ž 10) Rotate a matrix by 90 degree.
ž 11) Some stack based questions like stock span problem, next greater element.
ž 12) Some Dynamic Programming problems like maximum sum subarray,
maximum sum subarray such that no elements are consecutive, edit distance,
assembly line scheduling.
ž You may easily find out there are 4 questions in each level 1-3, well balanced.
20. KISS in phone interview
Think aloud face to face
ž Remember: Don’t think too complex in
phone interview, just clarify your idea
and keep it stupid simple(KISS).
ž For on-site interview, you would better to
well prepare and think aloud.
21. oj.leetcode.com for preparing
ž Last but not least, let me recommend
oj.leetcode.com for preparing Coding
Interview.
ž After solving more than 140 problems in
oj.leetcode.com in several days, I could
summary out its Hierarchy: 49% level 1,
28% level 2, 23% level 3.
ž LeetCode is focusing on data structures
and algorithms. It requires not only just
workable, but also optimized code. So you
need to program in strict time and space
complexity.
22. Bottom line to pass interview
ž Remember: In order to pass coding
interview, you may need to solve 2-5
problems per hour in oj.leetcode.com.
23. Thanks
ž Thanks for watching. It is just my
humble opinion, my 2 cents.
ž Should you have any questions, please
feel free to contact me.
ž All rights reserved. Please contact
changyu.yang for permission to copy,
distribute or reprint.