可以朗读
语音朗读
106千字
字数
2023-09-01
发行日期
展开全部
主编推荐语
一本关于数据结构和算法的书,以Java为描述语言,介绍了计算机编程中常用的数据结构和算法。
内容简介
全书共13章,讲述了常见的数据结构、排序算法、位运算、树、递归、回溯算法、贪心算法、双指针和滑动窗口、BFS和DFS、前缀和、动态规划、并查集、其他经典算法等知识。本书内容丰富,实用性强,通过示例练习和问题分析等方式,详细讲解了与算法有关的知识点。本书附赠视频讲解二维码,以及源代码。
本书适合程序员、计算机专业相关师生,以及对算法感兴趣的读者阅读。
目录
- 版权信息
- 内容提要
- 前言
- CHAPTER 1 第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.2 AVL树
- 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.6 SPFA算法
- 1.8.7 弗洛伊德(Floyd)算法
- 1.8.8 普里姆(Prim)算法
- 1.8.9 克鲁斯卡尔(Kruskal)算法
- 1.8.10 博鲁夫卡(Boruvka)算法
- 1.8.11 拓扑排序
- 1.9 数据结构总结
- CHAPTER 2 第2章 排序算法
- 2.1 冒泡排序
- 2.2 选择排序
- 2.3 插入排序
- 2.4 快速排序
- 2.5 归并排序
- 2.6 堆排序
- 2.7 桶排序
- 2.8 基数排序
- 2.9 希尔排序
- 2.10 计数排序
- 2.11 其他排序
- CHAPTER 3 第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.7 2的幂
- 3.3.8 4的幂
- 3.3.9 交替二进制数
- 3.3.10 数字范围的按位与
- 3.3.11 字符串长度的最大乘积
- 3.3.12 两整数之和
- 3.3.13 集合的所有子集
- CHAPTER 4 第4章 树
- 4.1 二叉树的遍历方式
- 4.1.1 二叉树的DFS遍历
- 4.1.2 二叉树的Morris遍历
- 4.1.3 二叉树的BFS遍历
- 4.1.4 N叉树的遍历
- 4.2 二叉树层次遍历习题
- 4.3 二叉树的特性习题
- 4.4 二叉树的深度优先搜索习题
- 4.5 二叉树的构造
- 4.6 二叉树的公共祖先问题
- CHAPTER 5 第5章 递归
- 5.1 递归的理解
- 5.2 示例练习
- 5.2.1 反转链表
- 5.2.2 检查是否是回文链表
- 5.2.3 删除链表的倒数第n个节点
- 5.2.4 生成括号
- 5.2.5 二叉树展开为链表
- 5.2.6 将二叉搜索树改为累加树
- CHAPTER 6 第6章 回溯算法
- 6.1 回溯算法的使用
- 6.2 示例练习
- 6.2.1 解数独
- 6.2.2 n皇后
- 6.2.3 目标值的组合
- 6.2.4 组合
- 6.2.5 单词搜索
- 6.3 回溯算法的剪枝
- 6.3.1 有重复项数字的全排列
- 6.3.2 划分为k个相等的子集
- CHAPTER 7 第7章 贪心算法
- 7.1 贪心算法存在的不足
- 7.2 示例练习
- 7.2.1 柠檬找零
- 7.2.2 分发饼干
- 7.2.3 分糖果问题
- 7.2.4 最小跳跃次数
- 7.2.5 无重叠区域
- CHAPTER 8 第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 篮子里的水果
- CHAPTER 9 第9章 BFS和DFS
- 9.1 BFS的使用模板
- 9.2 DFS的使用模板
- 9.3 示例练习
- 9.3.1 岛屿数量
- 9.3.2 被围绕的区域
- 9.3.3 岛屿的最大面积
- 9.3.4 腐烂的苹果
- 9.3.5 删除无效的括号
- 9.3.6 省份数量
- CHAPTER 10 第10章 前缀和
- 10.1 一维前缀和
- 10.2 二维前缀和
- 10.3 示例练习
- 10.3.1 和为k的子数组
- 10.3.2 k个奇数的子数组
- 10.3.3 连续数组的长度
- 10.3.4 总和可被k整除的子数组
- 10.3.5 和为k的路径
- CHAPTER 11 第11章 动态规划
- 11.1 动态规划讲解
- 11.1.1 兑换零钱(一)
- 11.1.2 国王与金矿
- 11.1.3 解题思路
- 11.2 背包问题
- 11.2.1 01背包问题
- 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 最长上升子序列
- CHAPTER 12 第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 飞地的数量
- CHAPTER 13 第13章 其他经典算法
- 13.1 KMP算法
- 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.8 Base64编码
展开全部
出版方
机械工业出版社
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。