Algorithms 1. (Difficulty: 3) Merge Sort Time Complexity: O(n log(n)) 2. (Difficulty: 3) Quick Sort Time Complexity: O(n log(n)) 3. (Difficulty: 3) Heap Sort Time Complexity: O(n log(n)) 3. (Difficulty: 4) Rabin-Karp Algorithm 4. (Difficulty: 5) Knuth-Morris-Pratt(KMP) Algorithm 5. (Difficulty: 4) Dijkstra's Algorithm 6. (Difficulty: 3) Kadane's Algorithm Time Complexity: O(n) Data Structures 1. (Difficulty: 2) Binary Search Tree 2. (Difficulty: 3) Optimal Binary Search Tree 3. (Difficulty: 2) Trie 4. (Difficulty: 3) Max Heap Problems 1. (Difficulty: 3) Find the best apartment block on a single lane street based on minimum maximum distance to any of the required buildings. 2. (Difficulty: 4) Find all permutations of a small string which exist in a larger string. 3. (Difficulty: 4) Given an array of integers and a target integer, check if any subset elements of the array can add up to the target. (Subset Problem) Arrays & Strings 1. (Difficulty: 2) Find intersection of two sorted array of integers. Time Complexity: O(n) 2. (Difficulty: 3) Alphabetize (sort alphabetically) lowercase characters in a given string. Time Complexity: O(n log(n)) 3. (Difficulty: 3) Given two arrays of keypresses, determine if they output same printable string. Time Complexity: O(n) 4. (Difficulty: 2) Hexadecimal string addition. Time Complexity: O(n) 5. (Difficulty: 3) Rearrange given characters so that same character does not occur more than once in a given window. Time Complexity: O(n) 6. (Difficulty: 3) Search a number in a sorted circular rotated array. 7. (Difficulty: 4) Find words whose number representation are substring of a given number. 8. (Difficulty: 3) Determine if an input string can be segmented into words from a given list of words. 9. (Difficulty: 3) Given a number string, find the number of ways it can be converted to english alphabet words for a one to one mapping between alphabets and numbers. 10. (Difficulty: 3) Count minimum adjacent swaps required to make a palindrome 11. (Difficulty: 3) Find minimum possible amplitude of a given integer array Trees 1. (Difficulty: 2) Invert/Flip/Mirror a binary tree Bit manipulation 1. (Difficulty: 3) Pending - Swap two bits in a given unsigned long integer. Grids & Matrices 1. (Difficulty: 3) Count the number of islands in a 2d grid. 2. (Difficulty: 3) Given a list of coordinates in a 2D plane, count number of rectangles that can be created whose edges are aligned to the two axes. Named Problems 1. (Difficulty: 4) 0-1 Knapsack problem 2. (Difficulty: 3) Dutch National Flag (DNF) Sort Design 1. (Difficulty: 2) Design class with insert, random peek and random delete capabilities.