English translation is still processing... Some articles are still in Chinese, but most are completed. Please star this repo, when you come back soon, translation will finish perfectly. Just enjoy.
These articles are somehow kinds of Algorithmic Thinking. All based on LeetCode problems, but NOT ONLY the code of solution, but also WHY writing code this way, HOW we figure it out.
I don't like one liner and confusing, I like clear and easy-understanding.
Gitbook has deployed, will sync with this branch of the repo: https://labuladong.gitbook.io/algo-en/
If you want to clone this repo, please use following command:
git clone --depth 1 --branch english https://github.com/labuladong/fucking-algorithm.git
This command specifies the english
branch and limit the depth of clone, get rid of the Git commit history, which can be faster to clone.
-
I. High Frequency Interview Problem
- How to Implement LRU Cache
- How to Find Prime Number Efficiently
- How to Calculate Minimium Edit Distance
- How to Solve Drop Water Problem
- How to Remove Duplicate From Sorted Sequence
- How to Find Longest Palindromic Substring
- How to Reverse Linked List in K Group
- How to Check the Validation of Parenthesis
- How to Find Missing Element
- How to Pick Elements From a Arbitrary Sequence
- How to Scheduling Seats
- Union-Find Algorithm in Detail
- Union-Find Application
- Find Sebesquence With Binary Search
- 如何运用二分查找算法
- 如何寻找缺失和重复的元素
- 如何判断回文链表
- 一行代码就能解决的算法题
-
II. Data Structure
- Binary Head and Priority Queue
- LRU Cache Strategy in Detial
- Collections of Binary Search Operations
- Special Data Structure: Monotonic Stack
- Special Data Structure: Monotonic Stack
- Design Twitter
- Reverse Part of Linked List via Recursion
- Queue Implement Stack/Stack implement Queue
- 学习算法和刷题的思路指南
- 学习数据结构和算法读什么书
-
III. Algorithmic thinking
- My Way to Learn Algorithm
- The Framwork of Backtracking Algorithm
- Binary Search in Detial
- The Tech of Double Pointer
- The Key Concept of TowSum Problems
- Divide Complicated Problem: Implement a Calculator
- Prefix Sum Skill
- FloodFill Algorithm in Detail
- Interval Scheduling: Interval Merging
- Interval Scheduling: Intersections of Intervals
- String Multiplication
- 烧饼排序
- 滑动窗口技巧
- 常用的位操作
- 信封嵌套问题
- 回溯算法团灭排列、组合、子集问题
- 几个反直觉的概率问题
- 洗牌算法
- 递归详解
-
IV. Dynamic Programming
- Classic DP: Edit Distance
- Classic DP: Super Egg
- Classic DP: Super Egg(Advanced Solution)
- Class DP: Longest Common Subsequence
- Classis DP: Game Problems
- Regular Expression
- The Strategies of Subsequence Problem
- Greedy: Interval Scheduling
- 4 Keys Keyboard
- 动态规划详解
- 动态规划答疑篇
- 动态规划设计:最长递增子序列
- 动态规划之KMP字符匹配算法
- 团灭 LeetCode 股票买卖问题
- 团灭 LeetCode 打家劫舍问题
-
V. Common Knowledge