数据结构总览
排序算法(要会分析时间空间复杂度):冒泡、选择、插入、快排 ★★★ 归并 ★
二分查找(非递归递归)★★★
字符串逆序(翻转整数字符串)★★★
数组乱序(打乱数组,至少掌握两种方法)★★★
数组去重(至少掌握两种方法)★★★
两个栈来实现一个队列(两个队列实现栈可以了解一下)★
链表相关
? 入门:★★★
- 反转单链表
- 未排序链表去重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 ★