前言 第1章 常见的数据结构/ 1.1数组/ 1.1.1滚动数组/ 1.1.2差分数组/ 1.1.3二维差分数组/ 1.1.4树状数组/ 1.2链表/ 1.3队列/ 1.4栈/ 1.5散列表/ 1.6树/ 1.6.1二叉搜索树/ 1.6.2AVL树/ 1.6.3红黑树/ 1.6.4字典树/ 1.6.5哈夫曼树/ 1.6.6线段树/ 1.6.7笛卡儿树/ 1.6.8其他树/ 1.7堆/ 1.8图/ 1.8.1图的分类/ 1.8.2图的表示方式/ 1.8.3图的遍历/ 1.8.4迪杰斯特拉(Dijkstra)算法/ 1.8.5贝尔曼-福特(Bellman-Ford)算法/ 1.8.6SPFA算法/ 1.8.7弗洛伊德(Floyd)算法/ 1.8.8普里姆(Prim)算法/ 1.8.9克鲁斯卡尔(Kruskal)算法/ 1.8.10博鲁夫卡(Boruvka)算法/ 1.8.11拓扑排序/ 1.9数据结构总结/ 第2章 排序算法/ 2.1冒泡排序/ 2.2选择排序/ 2.3插入排序/ 2.4快速排序/ 2.5归并排序/ 2.6堆排序/ 2.7桶排序/ 2.8基数排序/ 2.9希尔排序/ 2.10计数排序/ 2.11其他排序/ 第3章 位运算/ 3.1位运算的常见操作符/ 3.2位运算的一些简单操作/ 3.3示例练习/ 3.3.1交换两个数字的值/ 3.3.2只出现一次的数字/ 3.3.3有限状态机/ 3.3.4二进制中1的个数/ 3.3.5总的比特位数/ 3.3.6反转二进制/ 3.3.72的幂/ 3.3.84的幂/ 3.3.9交替二进制数/ 3.3.10数字范围的按位与/ 3.3.11字符串长度的*大乘积/ 3.3.12两整数之和/ 3.3.13集合的所有子集/ 第4章 算法��籍树/ 4.1二叉树的遍历方式/ 4.1.1二叉树的DFS遍历/ 4.1.2二叉树的Morris遍历/ 4.1.3二叉树的BFS遍历/ 4.1.4N叉树的遍历/ 4.2二叉树层次遍历习题/ 4.3二叉树的特性习题/ 4.4二叉树的深度优先搜索习题/ 4.5二叉树的构造/ 4.6二叉树的公共祖先问题/ 第5章 递归/ 5.1递归的理解/ 5.2示例练习/ 5.2.1反转链表/ 5.2.2检查是否是回文链表/ 5.2.3删除链表的倒数第n个节点/ 5.2.4生成括号/ 5.2.5二叉树展开为链表/ 5.2.6将二叉搜索树改为累加树/ 第6章 回溯算法/ 6.1回溯算法的使用/ 6.2示例练习/ 6.2.1解数独/ 6.2.2n皇后/ 6.2.3目标值的组合/ 6.2.4组合/ 6.2.5单词搜索/ 6.3回溯算法的剪枝/ 6.3.1有重复项数字的全排列/ 6.3.2划分为k个相等的子集/ 第7章 贪心算法/ 7.1贪心算法存在的不足/ 7.2示例练习/ 7.2.1柠檬找零/ 7.2.2分发饼干/ 7.2.3分糖果问题/ 7.2.4*小跳跃次数/ 7.2.5无重叠区域/ 第8章 双指针和滑动窗口/ 8.1相向双指针/ 8.1.1回文串/ 8.1.2盛*多水的容器/ 8.2同向双指针/ 8.2.1移动所有的0到数组末尾/ 8.2.2两个链表的**个公共节点/ 8.3快慢双指针/ 8.3.1判断链表中是否有环/ 8.3.2找出链表的中间节点/ 8.4滑动窗口/ 8.5大小可变窗口/ 8.5.1*长没有重复字符的子串/ 8.5.2*小覆盖子串/ 8.5.3长度*小的连续子数组/ 8.6固定窗口/ 8.6.1平均值*大的子数组/ 8.6.2找到字符串中的异位词/ 8.6.3子数组中的*大值/ 8.7只增不减窗口/ 8.7.1*大连续1的个数/ 8.7.2替换后的*长重复字符/ 8.7.3篮子里的水果/ 第9章 BFS和DFS/ 9.1BFS的使用模板/ 9.2DFS的使用模板/ 9.3示例练习/ 9.3.1岛屿数量/ 9.3.2被围绕的区域/ 9.3.3岛屿的*大面积/ 9.3.4腐烂的苹果/ 9.3.5删除无效的括号/ 9.3.6省份数量/ 第10章 前缀和/ 10.1一维前缀和/ 10.2二维前缀和/ 10.3示例练习/ 10.3.1和为k的子数组/ 10.3.2k个奇数的子数组/ 10.3.3连续数组的长度/ 10.3.4总和可被k整除的子数组/ 10.3.5和为k的路径/ 第11章 动态规划/ 11.1动态规划讲解/ 11.1.1兑换零钱(一)/ 11.1.2国王与金矿/ 11.1.3解题思路/ 11.2背包问题/ 11.2.101背包问题/ 11.2.2完全背包问题/ 11.2.3多重背包问题/ 11.2.4状态压缩/ 11.3组合与排列/ 11.3.1兑换零钱(二)/ 11.3.2加起来和为目标值的组合/ 11.3.3单词拆分/ 11.4背包练习/ 11.4.1目标和(01背包)/ 11.4.2平分子集(01背包)/ 11.4.3*少的完全平方数(完全 背包)/ 11.5其他练习/ 11.5.1*长公共子串/ 11.5.2*长公共子序列/ 11.5.3网格中的不同路径/ 11.5.4*大正方形/ 11.5.5*长上升子序列/ 第12章 并查集/ 12.1并查集的使用/ 12.2并查集优化/ 12.3并查集路径压缩/ 12.4按大小合并优化/ 12.5按秩合并优化/ 12.6示例练习/ 12.6.1岛屿数量/ 12.6.2被围绕的区域/ 12.6.3省份数量/ 12.6.4飞地的数量/ 第13章 其他经典算法/ 13.1KMP算法/ 13.2马拉车算法/ 13.3摩尔投票算法/ 13.4埃氏筛法/ 13.5两个数的*大公约数/ 13.6算术表达式的运算/ 13.6.1中缀表达式转换的括号法/ 13.6.2中缀表达式转换的二叉树法/ 13.6.3中缀表达式转前缀表达式/ 13.6.4中缀表达式转后缀表达式/ 13.6.5后缀表达式求值/ 13.6.6前缀表达式求值/ 13.7牛顿迭代法求平方根/ 13.8Base64编码/