一、排序算法(Sorting)
冒泡排序(Bubble Sort)原理与优化方法
选择排序(Selection Sort)原理与实现
插入排序(Insertion Sort)原理与优化
快速排序(Quick Sort)原理、时间复杂度分析
归并排序(Merge Sort)原理与实现
堆排序(Heap Sort)原理与实现
桶排序(Bucket Sort)适用场景与实现
计数排序(Counting Sort)适用场景与实现
基数排序(Radix Sort)原理与实现
## 稳定排序与不稳定排序的区别
二、查找算法(Searching)
顺序查找(Linear Search)
二分查找(Binary Search)及变种(查找左边界/右边界)
插值查找(Interpolation Search)
斐波那契查找(Fibonacci Search)
哈希查找(Hash Search)
在旋转排序数组中查找元素
在二维矩阵中查找元素
三、递归与分治(Recursion & Divide and Conquer)
递归的基本思想与应用场景
斐波那契数列的递归与优化
汉诺塔问题
归并排序的分治思想
快速排序的分治思想
二分查找的分治思想
矩阵的分治法求解
四、双指针与滑动窗口(Two Pointers & Sliding Window)
两数之和(Two Sum)
三数之和(3Sum)
四数之和(4Sum)
盛最多水的容器(Container With Most Water)
最长无重复子串(Longest Substring Without Repeating Characters)
最小覆盖子串(Minimum Window Substring)
移动零(Move Zeroes)
合并两个有序数组(Merge Sorted Array)
五、贪心算法(Greedy)
分发饼干(Assign Cookies)
跳跃游戏(Jump Game)
跳跃游戏 II(Jump Game II)
区间调度问题(Interval Scheduling)
合并区间(Merge Intervals)
加油站问题(Gas Station)
分配任务最小时间(Task Scheduling)
六、动态规划(Dynamic Programming)
爬楼梯(Climbing Stairs)
打家劫舍(House Robber)
打家劫舍 II(House Robber II)
最大子序和(Maximum Subarray)
最长递增子序列(Longest Increasing Subsequence)
最长公共子序列(Longest Common Subsequence)
编辑距离(Edit Distance)
不同路径(Unique Paths)
最小路径和(Minimum Path Sum)
## 零钱兑换(Coin Change)
## 分割等和子集(Partition Equal Subset Sum)
## 买卖股票的最佳时机(Best Time to Buy and Sell Stock)