# 动态规划 (opens new window)
- 爬楼梯 (opens new window)
- 最大子序列和 (opens new window) / 最大子序列和对应数组
- 最长重复子数组 (opens new window)
- 无重复字符的最长子串 (opens new window)
- 最长递增子序列 (opens new window)
- 最长公共子序列 (opens new window)
- 买卖股票的最佳时机 (opens new window)
- 三角形最小路径和 (opens new window)
- 打家劫舍 (opens new window)
- 不同路径 (opens new window)
- 最小路径和 (opens new window)
- 分割等和子集 (opens new window)
# 回溯算法 (opens new window)
- 组合总和 i (opens new window) / 组合总和 ii (opens new window) / 数组找n个数求和
- 数字全排列 (opens new window) / 二维数组全排列
- 括号生成 (opens new window)
- 电话号码的数字组合 (opens new window)
- 子集 (opens new window)
- 路径总和 (opens new window)
- 路径总和ii (opens new window)
# 栈
- 最长有效括号 (opens new window)
- 去除重复字母 (opens new window)
- 移掉 k 位数字 (opens new window)
- 接雨水 (opens new window)
- 柱状图中的最大矩形 (opens new window)
- 最大矩形 (opens new window)
- 两个栈实现队列 (opens new window)
# 字符串 (opens new window)
- 最长公共前缀 (opens new window)
- 重复的子字符串 (opens new window)
- 字符串相加 (opens new window)
- 比较版本号 (opens new window)
# 链表
- 环形链表 i (opens new window)
- 环形链表 ii (opens new window)
- 反转链表 (opens new window)
- 合并两个有序链表 (opens new window)
- 合并 k 个有序链表 (opens new window)
- 删除链表倒数第 n 个节点 (opens new window)
- 链表中倒数第k个节点 (opens new window)
- 奇偶链表 (opens new window)
- 相交链表 (opens new window)
# 数组
- 合并两个有序数组 (opens new window)
- 合并区间 (opens new window)
- 旋转矩阵 (opens new window)
- 顺时针打印矩阵 (opens new window)
- 二分查找 (opens new window)
- 数组中第k大元素 (opens new window)
- 长度最小子数组 (opens new window)
- 下一个排列 (opens new window)
- 二分查找 (opens new window)
# 二叉树 (opens new window)
- 前序,中序,后序(递归 / 非递归) (opens new window)
- 判断二叉树是否相同 (opens new window)
- 判断二叉树是否对称 (opens new window)
- 合并二叉树 (opens new window)
- 求二叉树的深度 (opens new window)
- 翻转二叉树 (opens new window)
- 二叉树的层次遍历 (opens new window)
- 求二叉树的宽度 (opens new window)
- 二叉树的右视图 (opens new window)
- 二叉搜索树的第K大节点 (opens new window)
- 最近公共祖先 (opens new window)
# DFS / BFS (opens new window)
- DFS (递归 / 非递归)
- BFS(非递归)
- 求根到叶子节点数字之和 (opens new window)
- 路径总和 (opens new window)
- 岛屿数量 (opens new window)
- 岛屿最大面积 (opens new window)
- 打家劫舍iii (opens new window)
- 单词接龙
- N叉数的最大深度
# 十大排序算法 (opens new window)
- 冒泡排序
- 选择排序
- 插入排序
- 希尔排序
- 归并排序
- 快速排序
- 堆排序
- 计数排序
- 桶排序
- 基数排序
- sort原理:当数组长度小于等于10的时候,采用插入排序,大于10的时候,采用快排。 对于长度大于1000的数组,采用的是快排与插入排序混合的方式进行排序的,因为,当数据量很小的时候,插入排序效率优于快排。