LeetCode刷题指南——数据结构

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

你可能感兴趣的:(LeetCode练习)