LeetCode数据结构的基础知识:数据结构
知识点记录:
数组
-
双指针法
常见的有:
单数组的双指针法
双数组的双指针法
-
二分法
鉴于二分法查找在时间复杂度的优势,对于一些数组的查找问题,我们可以通过先将数组排序,之后采用二分进行查找的方式。
这里有三个二分法的模板可以参考:二分法模板
对于二分法,最后可能是不剩元素,剩余一个,剩余两个,具体根据情况选择;
队列&栈
- 队列的基本操作
- 广度优先搜索(BFS)
BFS主要特点是逐层搜索,直到找到目标,立即停止寻找,则最先找到的目标所在层次即为最短的距离或者最近的; - Stack
对于栈的先进先出这种特性,可以用来处理一些具有先后顺序的一组数据; - 深度优先搜索(DFS)
遍历所有的可能路径;
链表
- 单链表基本操作
- 使用单指针对链表进行遍历
- 使用双指针对链表进行遍历(快慢指针)
- 双链表基本操作
哈希表
- 设计哈希表
- 设计哈希集合
- 使用哈希对象时候,如何选择key值
二叉树
- 遍历:
前序遍历,中序遍历,后序遍历,层次遍历 - 使用递归和堆栈解决树的一些问题
- 二叉树的序列化和反序列化
二叉搜索树(BinarySearchTree)
- BTS 定义
- 验证BST:
中序遍历(左中右),遍历得到的值从小到大排列,可以使用此点验证二叉搜索树; - BST基本操作:
搜索,插入,删除 - 高度平衡二叉树验证:
BST+一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1 - 有序数组转换成高度平衡二叉搜索树
- 常见高度平衡二叉树:
红黑树;
AVL树;
伸展树;
树堆
N叉树
- N叉树的遍历:前序,后序,层次
前缀树
- 实现前缀树的插入和搜索
- 利用前缀树的特性进行字符搜索
PS
:
- 我的LeetCode主页:https://leetcode-cn.com/soledadvac/
- GitHub部分代码:https://github.com/SoledadVac/CommonLibForJava/tree/master/src/test/java/leetcode