# Coding Interview Accelerator

### Conclude and sum up various algorithm questions & solutions. A central place to brush up ourselves in a thorough and efficient way! ## Algorithms 1 - Fundamentals

Fundamentals Complexity name complexity description example constant statement add two numbers logarithmic divide in half binary search linear loop find the max linearithmic ... ## Algorithms 2 - Arrays and Strings

Arrays and Strings The array questions and string questions are often interchangeable. The time complexity to delete or insert an element at index i without resizing is O(n - i). Instead of deleting/inserting an entry (which requires shifting entries), consider overwriting it. When operating on 2D arrays, use parallel logic for rows an... ## Algorithms 3 - List & Linked Lists

List An ordered collection (also known as a sequence). The user of this interface has precise control over where in the list each element is inserted. The user can access elements by their integer index (position in the list), and search for elements in the list. Insert Delete GetRandom O(1) Design a data structure that supports all following... ## Algorithms 4 - Stacks and Queues

Stacks & Queues Facts of Stack A stack uses LIFO (last-in first-out) ordering. That is, as in a stack of dinner plates, the most recent item added to the stack is the first item to be removed. It uses the operations: push(item), pop(), peek(), and isEmpty(). Stacks are often useful in certain recursive algorithm. Sometimes you need ... ## Algorithms 5 - Graphs, Trees and Heaps

Graphs & Trees & Heaps A graph is a set of vertices and a collection of edges that each connect a pair of vertices. A tree is an acyclic connected graph. A disjoint set of trees is called a forest. A spanning tree of a connected graph is a subgraph that contains all of that graph’s vertices and is a single tree. A spanning fore... ## Algorithms 6 - Sorting and Searching

Sorting Let’s go through a number of sorting algorithms first: Bubble Sort | Runtime: O(n^2) average and worst case. Space: O(1). Selection Sort | Runtime: O(n^2) average and worst case. Space: O(1). Insertion Sort | Runtime: between O(n) and O(n^2). Space: O(1). More efficient than above simple sort. To begin, the left... ## Algorithms 7 - Hash/Cache and Memory

Hash Tables A hash table is a data structure that maps keys to values for highly efficient lookups, inserts and deletes (average O(1 + n/m) time complexity). This is a simple implementation by using an array of linked lists and a hash code function: First, use a hash function to compute the hash code from the key, which will usually be an ... ## Algorithms 8 - Dynamic Programming

Dynamic Programming Dynamic programming (DP) is mostly just a matter of taking a recursive algorithm and finding the overlapping subproblems (that is, the repeated calls). You then cache those results for future recursive calls. All recursive algorithms can be implemented iteratively (still use cache), although sometimes the code to do so is m... ## Algorithms 9 - Recursion, Greedy, Invariant

Recursion Recursion is a good choice for search, enumeration, and divide-and-conquer. If you are asked to remove recursion from a program, consider mimicking call stack with the stack data structure. Use recursion as alternative to deeply nested iteration loops. For example, recursion is much better when you have an ... ## Algorithms 10 - Parallel Computing

Parallel Computing Concurrency is when two or more tasks can start, run, and complete in overlapping time periods. Parallelism is when tasks literally run at the same time, eg. on a multi-core processor. Parallel computation has become increasingly common. Laptops and desktops come with multiple processors which communicate through shared memo... ## Algorithms 11 - Object-Oriented Design

Object-Oriented Design A class is an encapsulation of data and methods that operate on that data, which reduces the conceptual burden of writing code, and enable code reuse, through the use of inheritance and polymorphism. A design pattern is a general repeatable solution to a commonly occurring problem, or it is a description... ## Algorithms 12 - Design and Scalability

In an interview, when someone asks a system design question. You should have a conversation in which you demonstrate an ability to think creatively, understand design trade-offs, and attack unfamiliar problems. You should sketch key data structures and algorithms, as well as the technology stack (programming language, libraries, OS, hardware, an... ## Algorithms 13 - SQL and Databases

Database Topics Indexing An index is a data structure, mostly a B-tree which is time efficient (lookup, deletion, insertion) can all be done in logarithmic time, also it’s sorted inside, helpful for range lookup: like find out all of the employees who are less than 40 years old. An index stores the value of indexed column, an... ## Algorithms 14 - Math and Logic Puzzles

Prime Numbers A prime number (or a prime) is a natural number greater than 1 that has no positive divisors other than 1 and itself. Every positive integer can be decomposed into a product of primes that is unique up to ordering. For example: 84 = 2^2 * 3^1 * 5^0 * 7^1 * 11^0 * 13^0 * 17^0 * … ## Algorithms 15 - The Honors Questions

Honors Questions This chapter contains problems that are more difficult to solve. Many of them are commonly asked at interviews, albeit with the expectation that the candidate will not deliver the best solution. Also categorized with other similar questions to give you an overall ideas around this topic. 