-
Read all constraints carefully
-
Repeate the problem in your own words
-
Ask clarifying questions
-
Solve it conceptually without code
- Explain the naive approach(bruteforce) first and state that it's not the optimal solution
- Explain a more optimized solution
-
Run a test case to see if your solution works
-
Ask if you should proceed with coding your solution
- Competitive Programming: How to Approach a Problem (as a red coder)
- 7 Steps to Solve Algorithm Problems
- 3 Algorithm Strategies
- Array
- Linked List
- Singly Linked List
- Doubly Linked List
- Stack
- Queue
- Hash table
- Hash set
- Sets (WeakSet)
- Maps (WeakMap)
- Binary trees
- Heap
- Graphs
- Directed
- Undirected
- Adjacency Matrix
- Adjacency List
- Traversals: BFS, DFS
- 14 Patterns to Ace Any Coding Interview Question
- The Ultimate Strategy to Preparing for a Coding Interview
- Two Pointers
- Sliding Window
- Fast and Slow Pointers
- Frequency Counter
- Meet in The Middle
- Sorting
- Searching
- Divide and Conquer
- Dynamic Programming and Memoization
- Greedy
- Recursion
- Graph Traversal (BFS and DFS)
- Bubble sort
- Insertion sort
- Quick sort
- Merge sort
- Selection sort
- Radix sort
- Heap sort
- Cracking The Coding Interview Playlist
- Data Structures Easy to Advanced Course - Full Tutorial From a Google Engineer
- CS310 Data Structures in Java at San Diego State University
- Dynamic Programming - Learn to Solve Algorithmic Problems & Coding Challenges
- Stanford Algorithms: part 1
- Stanford Algorithms: part 2
- MIT 6.006 Introduction to Algorithms, Fall 2011
- Algorithms Course - Graph Theory Tutorial from a Google Engineer
- Coding Interview University