数据结构总览


排序算法(要会分析时间空间复杂度):冒泡、选择、插入、快排 ★★★ 归并 ★

二分查找(非递归递归)★★★

字符串逆序(翻转整数字符串)★★★

数组乱序(打乱数组,至少掌握两种方法)★★★

数组去重(至少掌握两种方法)★★★

两个栈来实现一个队列(两个队列实现栈可以了解一下)★

链表相关

? 入门:★★★

  • 反转单链表
  • 未排序链表去重O(n2)
  • 排序链表去重O(n)
  • 单链表删除节点
  • 链表partition
  • 寻找链表倒数第K个节点
  • 删除链表倒数第N个节点
  • 判断链表是否为回文链表
  • 判断链表是否有环
  • 环形链表第一个入环节点
  • 两个链表的第一个公共节点

? 复杂:

  • 合并两个排序的链表★★
  • 合并K个排序的链表★★
  • 奇偶链表★
  • 复制带随机指针的单向链表★
  • 有序链表转换二叉搜索树(BST)★
  • 二叉树展开为链表★
  • K 个一组翻转链表★

二叉树各种遍历(前中后序遍历,递归非递归,DFS,BFS)★★★

二叉树遍历涉及到的一些算法题

(好多题其实就是二叉树深度或者广度非递归遍历稍微改一下即可)

  • 前序和中序重建二叉树★★
  • BST第K大的数和第K小的数★
  • 二叉树按层求和(层序遍历改进)★
  • Z字型(之字形)遍历二叉树★

二叉树深度相关

  • 二叉树深度★★★
  • 二叉树最小深度★★
  • 树找两(叶子)节点最长距离(相隔的最长路径)★
  • 判断二叉树是否为平衡二叉树★★
  • 二叉树右视图(左)★

二叉树路径相关

  • 路径总和1★★★
  • 路径总和2(回溯法)★

DP

  • 斐波那契数列★★★
  • 最长公共子序列 LCS ★★
  • 最长上升子序列 ★★
  • 连续子数组(子串)的最大和★★
  • 硬币找零(最少硬币个数)★★
  • 0-1背包问题★
  • 完全背包问题(了解即可)★

全排列(回溯法)见LeetCode 全排列1、全排列2 ★