- Data structure: take notes, draw concepts
- Algorithms for this data structure: take notes, draw concepts
- Implement data structure and its algorithms from scratch
Implementation routine:
- Read problem specification
- Write unit tests: corner cases, general usage, stress test
- Design problem solution
- Write code in IDE
- Test it
- Unit testing system
- Valgrind
- Debugging
- Profiler
- Array
- Stack
- Queue
- Deque
- Linked List
- Heap
- Recursion
- Priority Queues and Disjoint Sets
- Hash table
- Trees
- Greedy Algorithms
- Divide and Conquer
- Sorting and Searching
- Dynamic Programming
- Graph
- String
- Linear Programming
- NP-complete
- Learn technique's concepts if it's new: take notes, draw concepts
- Solve 15 problems for each module\technique: 5 easy, 5 medium, 5 hard
Implementation routine:
- Read problem specification
- Write unit tests: corner cases, general usage
- Design problem solution
- Write code in paper
- Test it with unit tests
- Write stress test in IDE
- Write solution in IDE
- Test it
- Two Pointers
- Backtracking
- Sliding Window
- Minimax
- Random
- Rejection Sampling
- Reservoir Sampling
- Memorization
- Brainteaser
- Geometry
- Combinatorics
- Math
- Bit Manipulation
- Dynamic Programming
- Divide and Conquer
- Greedy
- Array
- String
- Tree
- Hash Table
- Depth-first Search
- Binary Search
- Breadth-first Search
- Stack
- Design
- Linked List
- Heap
- Graph
- Sort
- Union Find
- Binary Search Tree
- Trie
- Queue
- Segment Tree
- Binary Indexed Tree
- Topological Sort
- Map
- Mock Interviews
- InterviewBit: practice for mock interviews
- KickStart Rounds