- Getting the hang of the programming paradigm to become fluent in converting an algorithm in your mind to source code in a language like C++.
- The first step in designing an algorithm for almost any problem using Brute Force, Simulation, and Exhaustive Search.
- Understanding the first principles and using the essential container data structures including Arrays, Linked Lists, Binary Trees, Binary Search Trees, Hash Tables, Deque, Stack and Queues, and Priority Queues (mostly Heap data structure).
- Intuitive analysis of algorithms using Big-Oh notation and Amortized Cost Analysis.
- Sets and Maps. Hashing. Keeping track of the visited elements of a traversal
- Matrixes and Jagged arrays.
- Preprocessing techniques using data structures to improve time complexity. Space-and-Time Tradeoff, Input Enhancement, Prefix Sum
- Transform-and-Conquer, Presorting, etc.
- Two Pointers (non-Greedy) technique
- Fixed-width Sliding Window (non-Greedy) technique
- Bit Manipulation
No Attachment Found