一、数据结构与算法
1 线性表
1.1 数组
LeetCode题:
1.二分查找(线性表-数组)
2.移除元素
3.有序数组的平方
4.长度最小子数组
5.螺旋数组
6.移除链表元素
1.2 链表
LeetCode题:
1.移除链表元素
2.设计链表
3.反转链表
4.两两交换链表中的结点
5.删除链表的倒数第N个结点
2 栈
3 队列
4 串
1.反转字符串
2.反转字符串II
3.替换空格
4.翻转字符串里的单词
5.左旋转字符串
6.实现strStr()
7.重复的子字符串
5 树
5.1 二叉树遍历查找删除
5.2 顺序存储二叉树
5.3 线索化二叉树(中序遍历)
5.4 堆排序——树应用
5.5 赫夫曼树——树应用
5.6 赫夫曼编码——树应用
5.7 赫夫曼编码(实现数据的解压)——树应用
5.8 赫夫曼编码(实现文件的压缩和解压)——树应用
5.9 二叉排序树
5.10 平衡二叉树
LeetCode题:
1.二叉树的递归遍历(前序、中序、后序)
2.二叉树的迭代遍历(前序、中序、后序)
3.二叉树的层序遍历
4.反转二叉树
5.对称二叉树
6.二叉树的最大深度
7.N叉树的最大深度
8.二叉树的最小深度
9.完全二叉树的结点个数
10.平衡二叉树
11.二叉树的所有路径
12.相同的树
13.左叶子之和
14.找树左下角值
15.路径总和
16.从中序与后序遍历序列构造二叉树
17.最大二叉树
18.合并二叉树
19.二叉搜索树中的搜索
20.验证二叉搜索树
21.二叉搜索树的最小绝对差
22.二叉搜索树中的众数
23.二叉树的最近公共祖先
24.二叉树的最近公共祖先
25. 二叉搜索树中的插入操作
26.删除二叉搜索树中的结点
27.修剪二叉搜索树
28.将有序数组转换为二叉搜索树
29.把二叉搜索树转换为累加树
6 图
7 查找
8 排序
9 递归
10 常用算法
10.1 二分查找(非递归方式)
10.2 分治算法
10.3 动态规划(背包问题)
10.4 KMP算法-字符串匹配
10.5 贪心算法
10.6 普利姆算法
10.7 克鲁斯卡尔算法
10.8 迪杰斯特拉算法
10.9 弗洛伊德算法
10.10 马踏棋盘算法
11 回溯
12 哈希表
LeetCode题:
1.有效的字母异位词
2.两个数组的交集
3.快乐数
4.两数之和
5.四数相加
6.赎金信
7.三数之和
13 常用算法
14 贪心算法
15 动态规划
LeetCode题:
1.斐波拉契数列
2.爬楼梯
3.使用最小花费爬楼梯
4.不同路径
5.不同路径II
6.整数拆分
7.不同的二叉搜索树
8.背包理论
9.分割等和子集
10.最后一块石头的重量
11.目标和
12.一和零
13.完全背包理论
14.组合总和
15.爬楼梯
16.零钱兑换
17.完全平方数
18.单词拆分
零钱兑换II
两个字符串的删除操作
回文子串
最长回文子序列