更新时间:2024-12-31 18:26:36
封面
版权信息
作者简介
内容简介
前言
第1章 STL
1.1 deque(双端队列)
训练 度度熊学队列
1.2 priority_queue(优先队列)
训练1 第k大的数
训练2 表演评分
1.3 bitset(位图)
1.3.1 定义和初始化
1.3.2 基本操作
训练 集合运算
1.4 set、multiset(集合、多重集合)
训练1 集合合并
训练2 并行处理
1.5 map、multimap(映射、多重映射)
训练1 硬木种类
训练2 水果
1.6 STL中的常用函数
1.6.1 fill()
1.6.2 nth_element()
1.6.3 lower_bound()、upper_bound()
1.6.4 next_permutation()、pre_permutation()
训练1 中位数
训练2 字谜
第2章 实用的数据结构
2.1 并查集
训练1 畅通工程
训练2 方块栈
2.2 倍增、稀疏表(ST)、区间最值查询(RMQ)
2.2.1 倍增
2.2.2 稀疏表
2.2.3 区间最值查询
训练1 区间最值差
训练2 最频繁值
2.3 最近公共祖先(LCA)
2.3.1 暴力搜索法
2.3.2 树上倍增法
2.3.3 在线区间最值查询算法
2.3.4 离线Tarjan算法
训练1 最近公共祖先
训练2 树上距离
2.4 树状数组
2.4.1 一维树状数组
2.4.2 多维树状数组
训练1 数星星
训练2 矩形区域查询
2.5 线段树
2.5.1 基本操作
2.5.2 懒操作
训练1 敌兵布阵
训练2 简单的整数问题
第3章 查找算法
3.1 散列表
3.1.1 散列函数
3.1.2 开放地址法
3.1.3 链地址法
3.1.4 建立公共溢出区
3.1.5 散列查找及其性能分析
训练 雪花
3.2 字符串模式匹配
3.2.1 BF算法
3.2.2 KMP算法
训练1 统计单词数
训练2 字符串匹配
3.3 字典树(Trie树)
3.3.1 创建
3.3.2 查找
3.3.3 应用
训练 单词翻译
第4章 平衡树
4.1 树高与性能
4.2 平衡二叉搜索树(AVL树)
4.2.1 调整平衡的方法
4.2.2 插入
4.2.3 创建
4.2.4 删除
训练 双重队列
4.3 树堆(Treap)
4.3.1 右旋和左旋
4.3.2 插入
4.3.3 删除
4.3.4 前驱
4.3.5 后继
训练 少林功夫
4.4 伸展树(Splay树)
4.4.1 时空局部性的原理
4.4.2 右旋和左旋
4.4.3 伸展
4.4.4 查找
4.4.5 插入
4.4.6 分裂
4.4.7 合并
4.4.8 删除
4.4.9 区间操作
4.4.10 算法分析
训练1 玩链子