- Learning Resources
- Basics
- Complexity
- Data Structures
- Solution Patterns
- Problem Patterns
- Problems In Real Interviews
- LeetCode
- HackerRank
- Algo Monster
- NeetCode
- Grokking the Coding Interview: Patterns for Coding Questions
- Tech Interview Handbook: Coding interview preparation
- InterviewBit
- labuladong 的算法笔记
- Breadth-First Search (BFS)
- Depth-First Search (DFS)
- Dynamic Programming
- Backtraking
- Union Find (Disjoint Set)
- Binary Search
- 2 Pointers
- Sliding Window
- Prefix Sum Array
- Difference Array
- Frequency Counters
- Reservoir Sampling
- Heap (Priority Queue)
- Trie
- Quickselect (Hoare's selection algorithm)
- Bit Manipulation
- Bitmask
- Monotonic Stack
- Divide and Conquer
- Sorting
- Greedy
- Recursion
- Other algorithms
- Kahn's algorithm
- Sweep line algorithm
- Kadane's algorithm
- Dijkstra's algorithm
- Easy rolling
- Bidirectional search
- Counting sort
- Kruskal's algorithm (for minimum spanning tree)
- Kadane's Algorithm
- Fenwick tree or binary indexed tree (BIT)
- Problem Categories
- Random
- Interval
- Detect Cycle
- Top K and Kth
- Topological sorting
- Minimum spanning tree
- Knapsack
- Longest X sequence/substring
- LeetCode-298 Binary Tree Longest Consecutive Sequence
- Integer Calculation (Integers represents in other data structures and then calculation)
- In String
- LeetCode-415 Add Strings
- LeetCode-43 Multiply Strings
- LeetCode-67 Add Binary
- In Array
- LeetCode-66 Plus One
- LeetCode-989 Add to Array-Form of Integer
- In String
flowchart LR %% data structure --> problem 1DA-->SA 1DA-->SC 2DA-->SC ST-->SY LL-->SY BIT-->SC GP-->SC ST-->SS %% problem --> solution SAS-->PSA SY-->SK EN-->BT GPG-->UF RD-->PSA RD-->RS FMM-->DP SC-->BS SC-->BFS SC-->DFS SS-->SW SA-->SW SA-->DA TOP-->QS TOP-->PQ %% problem internal SA-->SAS subgraph datastructureSG ["Data Structures"] 1DA["1D Array"] 2DA["2D Array"] LL["Linked List"] ST["String"] BIT["Binary tree"] GP["Graph"] end subgraph problemSG ["Problem Patterns"] SA["Subarray"] SAS["Subarray sum"] SS["Substring"] SY["Symmetry (Parentheses, Palindrome)"] EN["Enumeration (Find all possible combinations)"] SC["Search"] GPG["Grouping"] RD["Random"] FMM["Find the max/min value"] TOP["Top K/Kth"] end subgraph solutionSG [Solution Patterns] PSA["Prefix sum array"] DA["Difference array"] RC["Recursion"] 2P["2 Pointers"] SK["Stack"] BT["Backtracking"] BS["Binary Search"] BFS["Breadth-first search"] DFS["Depth-first search"] UF["Union find"] DP["Dynamic programming"] SW["Sliding window"] RS["Reservoir sampling"] QS["Quickselect"] PQ["Priority queue"] end