书馨卡帮你省薪 2024个人购书报告 2024中图网年度报告
欢迎光临中图网 请 | 注册

算法面试(全2册)

出版社:清华大学出版社出版时间:2024-10-01
开本: 16开 页数: 784
中 图 价:¥158.4(8.0折) 定价  ¥198.0 登录后可看到会员价
加入购物车 收藏
运费6元,满39元免运费
?新疆、西藏除外
本类五星书更多>

算法面试(全2册) 版权信息

算法面试(全2册) 本书特色

本书适合于需要进行算法面试的读者,通过阅读本书可以掌握算法面试中求解问题的方法和技巧,提升自己的算法技能和思维方式,从而在面试中脱颖而出。同时,本书可以作为“数据结构”和“算法设计与分析”课程的辅导书,也可以供各种程序设计竞赛和计算机编程爱好者研习。

算法面试(全2册) 内容简介

   本书旨在帮助读者更好地应对算法面试,提高算法和编程能力。书中按专题精选了LeetCode平台的一系列的热点算法题,并详细解释其求解思路和过程。全书分为三个部分,第Ⅰ部分为数据结构及其应用,以常用数据结构为主题,深入讲解各种数据结构的应用方法和技巧。第Ⅱ部分为算法策略及其应用,以基本算法设计方法和算法设计策略为主题,深入讲解各种算法设计策略的应用方法和技巧。第Ⅲ部分为经典问题及其求解,以实际中的一些问题为主题,深入讲解这些问题多种求解方法。

本书适合于需要进行算法面试的读者,通过阅读本书可以掌握算法面试中求解问题的方法和技巧,提升自己的算法技能和思维方式,从而在面试中脱颖而出。同时可以作为《数据结构》和《算法设计与分析》课程的辅导书,也可以供各种程序设计竞赛和计算机编程爱好者研习。

算法面试(全2册) 目录

扫一扫
配套资源
**部分数据结构及其应用 第1章数组 1.1数组概述 1.1.1数组的定义 1.1.2数组的知识点 1.2数组的基本算法设计 1.2.1LeetCode27——移除元素★ 1.2.2LeetCode283——移动0★ 1.2.3LeetCode2460——对数组执行操作★ 1.2.4LeetCode75——颜色的分类★★ 1.2.5LeetCode189——轮转数组★★ 1.3有序数组的算法设计 1.3.1LeetCode26——删除有序数组中的重复项★ 1.3.2LeetCode80——删除有序数组中的重复项Ⅱ★★ 1.3.3LeetCode1287——有序数组中出现次数超过元素总数25%的
元素★ 1.3.4LeetCode1200——*小绝对差★ 1.3.5LeetCode88——合并两个有序数组★ 1.3.6LeetCode349——两个数组的交集★ 1.3.7LeetCode977——有序数组的平方★ 1.3.8LeetCode1470——重新排列数组★ 1.3.9LeetCode1213——3个有序数组的交集★ 1.3.10LeetCode264——丑数Ⅱ★★ 1.3.11LeetCode373——查找和*小的k对数字★★ 推荐练习题 第2章链表 2.1链表概述 2.1.1链表的定义 2.1.2链表的知识点 2.2链表基本操作的算法设计 2.2.1LeetCode203——移除链表元素★ 2.2.2LeetCode206——反转链表★ 2.2.3LeetCode328——奇偶链表★★ 2.2.4LeetCode61——旋转链表★★ 2.2.5LeetCode141——环形链表★ 2.2.6LeetCode138——复制带随机指针的链表★★ 2.2.7LeetCode707——设计链表★★ 2.3链表的分组算法设计 2.3.1LeetCode92——反转链表Ⅱ★★ 2.3.2LeetCode24——两两交换链表中的结点★★ 2.3.3LeetCode25——k个一组翻转链表★★★ 2.4有序链表的算法设计 2.4.1LeetCode83——删除排序链表中的重复元素★ 2.4.2LeetCode82——删除排序链表中的重复元素Ⅱ★★ 2.4.3LeetCode21——合并两个有序链表★ 2.4.4LeetCode23——合并k个有序链表★★★ 2.4.5LeetCode1634——求两个多项式链表的和★★ 推荐练习题 第3章栈 3.1栈概述 3.1.1栈的定义 3.1.2栈的知识点 3.2扩展栈的算法设计 3.2.1LeetCode1381——设计一个支持增量操作的栈★★ 3.2.2LeetCode155——*小栈★ 3.2.3LeetCode716——*大栈★★★ 3.3栈应用的算法设计 3.3.1LeetCode1544——整理字符串★★ 3.3.2LeetCode71——简化路径★★ 3.3.3LeetCode1441——用栈操作构建数组★ 3.3.4LeetCode946——验证栈序列★★ 3.3.5LeetCode20——有效的括号★ 3.3.6LeetCode1249——删除无效的括号★★ 3.3.7LeetCode32——*长的有效括号子串的长度★★★ 3.4单调栈应用的算法设计 3.4.1LeetCode503——下一个更大元素Ⅱ★★ 3.4.2LeetCode496——下一个更大元素Ⅰ★ 3.4.3LeetCode739——每日温度★★ 3.4.4LeetCode316——去除重复字母★★ 3.4.5LeetCode84——柱状图中*大的矩形★★★ 3.4.6LeetCode42——接雨水★★★ 推荐练习题 第4章队列和双端队列 4.1队列和双端队列概述 4.1.1队列和双端队列的定义 4.1.2队列和双端队列的知识点 4.2扩展队列的设计 4.2.1LeetCode622——设计循环队列★★ 4.2.2LeetCode641——设计循环双端队列★★ 4.2.3LeetCode1670——设计前中后队列★★ 4.2.4LeetCode232——用栈实现队列★ 4.3队列的应用 4.3.1LeetCode1700——无法吃午餐的学生的数量★ 4.3.2LeetCode933——*近的请求次数★ 4.3.3LeetCode225——用队列实现栈★ 4.3.4LeetCode281——锯齿迭代器★★ 4.3.5LeetCode1047——删除字符串中所有的相邻重复项★ 4.4单调队列 4.4.1LeetCode239——滑动窗口的*大值★★★ 4.4.2LeetCode1438——绝对差不超过限制的*长连续子数组★★ 4.4.3LCR184——设计自助结算系统★★ 推荐练习题 第5章哈希表 5.1哈希表概述 5.1.1哈希表的定义 5.1.2哈希表的知识点 5.2哈希表的实现 5.2.1LeetCode705——设计哈希集合★ 5.2.2LeetCode706——设计哈希映射★ 5.3哈希集合应用的算法设计 5.3.1LeetCode349——两个数组的交集★ 5.3.2LeetCode202——快乐数★ 5.3.3LeetCode217——存在重复元素★ 5.3.4LeetCode379——电话目录管理系统★★ 5.3.5LeetCode128——*长连续序列★★ 5.3.6LeetCode41——缺失的**个正数★★★ 5.3.7LeetCode1436——旅行终点站★ 5.4哈希映射应用的算法设计 5.4.1LeetCode350——两个数组的交集Ⅱ★ 5.4.2LeetCode1460——通过翻转子数组使两个数组相等★ 5.4.3LeetCode383——赎金信★ 5.4.4LeetCode347——前k个高频元素★★ 5.4.5LeetCode242——有效的字母异位词★ 5.4.6LeetCode205——同构字符串★ 5.4.7LeetCode1——两数之和★ 5.4.8LeetCode219——存在重复元素Ⅰ★ 5.4.9LeetCode49——字母异位词的分组★★ 5.4.10LeetCode249——移位字符串的分组★★ 推荐练习题 第6章二叉树 6.1二叉树概述 6.1.1二叉树的定义 6.1.2二叉树的知识点 6.2二叉树先序、中序和后序遍历应用的算法设计 6.2.1LeetCode144——二叉树的先序遍历★ 6.2.2LeetCode94——二叉树的中序遍历★ 6.2.3LeetCode145——二叉树的后序遍历★ 6.2.4LeetCode965——单值二叉树★ 6.2.5LeetCode100——相同的树★ 6.2.6LeetCode572——另一棵树的子树★ 6.2.7LeetCode543——二叉树的直径★ 6.2.8LeetCode563——二叉树的坡度★ 6.2.9LeetCode2331——计算二叉树的布尔运算值★ 6.2.10LeetCode199——二叉树的右视图★★ 6.2.11LeetCode662——二叉树的*大宽度★★ 6.3二叉树层次遍历应用的算法设计 6.3.1LeetCode102——二叉树的层次遍历★★ 6.3.2LeetCode199——二叉树的右视图★★ 6.3.3LeetCode637——二叉树的层平均值★ 6.3.4LeetCode2471——逐层排序二叉树所需的*少操作数目★★ 6.3.5LeetCode2415——反转二叉树的奇数层★★ 6.3.6LeetCode1602——找二叉树中*近的右侧结点★★ 6.4构造二叉树的算法设计 6.4.1LeetCode105——由先序与中序遍历序列构造二叉树★★ 6.4.2LeetCode106——由中序与后序遍历序列构造二叉树★★ 6.4.3LeetCode2196——根据描述创建二叉树★★ 6.5二叉树序列化的算法设计 6.5.1LeetCode297——二叉树的序列化与反序列化★★★ 6.5.2LeetCode100——相同的树★ 6.5.3LeetCode572——另一棵树的子树★ 推荐练习题 第7章二叉搜索树 7.1二叉搜索树概述 7.1.1二叉搜索树的定义 7.1.2二叉搜索树的知识点 7.2二叉搜索树基本操作的算法设计 7.2.1LeetCode1008——先序遍历构造二叉搜索树★★ 7.2.2LeetCode700——二叉搜索树中的搜索★ 7.2.3LeetCode701——二叉搜索树中的插入操作★★ 7.2.4LeetCode450——删除二叉搜索树中的结点★★ 7.3二叉搜索树特性的算法设计 7.3.1LeetCode270——*接近的二叉搜索树值★ 7.3.2LeetCode235——二叉搜索树的*近公共祖先★★ 7.3.3LeetCode938——二叉搜索树的范围和★ 7.3.4LeetCode669——修剪二叉搜索树★★ 7.3.5LeetCode776——拆分二叉搜索树★★ 7.3.6LeetCode285——二叉搜索树中的中序后继★★ 7.3.7LeetCode255——验证先序遍历序列二叉搜索树★★ 7.4二叉搜索树基于中序遍历的算法设计 7.4.1LeetCode783——二叉搜索树结点的*小距离★ 7.4.2LeetCode230——二叉搜索树中第k小的元素★★ 7.4.3LeetCode98——验证二叉搜索树★★ 7.4.4LeetCode538——把二叉搜索树转换为累加树★★ 7.4.5LeetCode99——恢复二叉搜索树★★ 7.4.6LeetCode173——二叉搜索树迭代器★★ 7.4.7LeetCode272——*接近的二叉搜索树值Ⅱ★★★ 推荐练习题 第8章平衡二叉树 8.1平衡二叉树概述 8.1.1平衡二叉树的定义 8.1.2平衡二叉树的知识点 8.2构造平衡二叉树的算法设计 8.2.1LeetCode108——将有序数组转换为平衡二叉树★ 8.2.2LeetCode109——将有序链表转换为平衡二叉树★★ 8.2.3LeetCode1382——将二叉搜索树转换为平衡二叉树★★ 8.3平衡树集合应用的算法设计 8.3.1LeetCode506——相对名次★ 8.3.2LeetCode414——第三大的数★ 8.3.3LeetCode855——考场就座★★ 8.3.4LeetCode2353——设计食物评分系统★★ 8.4平衡树映射应用的算法设计 8.4.1LeetCode846——一手顺子★★ 8.4.2LeetCode981——基于时间的键值存储★★ 8.4.3LeetCode1912——设计电影租借系统★★★ 推荐练习题 第9章优先队列 9.1优先队列概述 9.1.1优先队列的定义 9.1.2优先队列的知识点 9.2优先队列的实现 9.2.1LeetCode912——排序数组★★ 9.2.2LeetCode215——数组中第k个*大的元素★★ 9.2.3LeetCode506——相对名次★ 9.3优先队列应用的算法设计 9.3.1LeetCode703——数据流中第k大的元素★ 9.3.2LeetCode373——查找和*小的k对数字★★ 9.3.3LeetCode23——合并k个有序链表★★★ 9.3.4LeetCode239——滑动窗口的*大值★★★ 9.3.5LeetCode1383——*大的团队表现值★★★ 9.3.6LeetCode2462——雇佣k位工人的总代价★★ 推荐练习题 第10章并查集 10.1并查集概述 10.1.1并查集的定义 10.1.2并查集的实现 10.1.3带权并查集 10.2一维并查集应用的算法设计 10.2.1LeetCode261——以图判树★★ 10.2.2LeetCode323——无向图中连通分量的数目★★ 10.2.3LeetCode684——冗余连接★★ 10.2.4LeetCode785——判断二分图★★ 10.2.5LeetCode990——等式方程的可满足性★★ 10.2.6LeetCode1061——按字典序排列*小的等价字符串★★ 10.2.7LeetCode947——移除*多的同行或同列石头★★ 10.3二维并查集 10.3.1LeetCode200——岛屿的数量★★ 10.3.2LeetCode1559——在二维网格图中探测环★★ 10.4带权并查集 10.4.1LeetCode695——*大岛屿的面积★★ 10.4.2LeetCode128——*长连续序列★★ 10.4.3LeetCode1254——统计封闭岛屿的数目★★ 10.4.4LeetCode399——除法求值★★ 推荐练习题 第11章前缀和与差分 11.1前缀和与差分概述 11.1.1前缀和 11.1.2差分 11.2一维前缀和应用的算法设计 11.2.1LeetCode724——寻找数组的中心下标★ 11.2.2LeetCode238——除自身以外数组的乘积★★ 11.2.3LeetCode1749——任意子数组和的绝对值的*大值★★ 11.2.4LeetCode1524——和为奇数的子数组的数目★★ 11.2.5LeetCode560——和为k的子数组★★ 11.2.6LeetCode325——和等于k的*长子数组的长度★★ 11.2.7LeetCode523——连续子数组和★★ 11.2.8LeetCode53——*大子数组和★★ 11.3二维前缀和应用的算法设计 11.3.1LeetCode304——二维区域和检索(矩阵不可变)★★ 11.3.2LeetCode1074——元素和为目标值的子矩阵的数量★★★ 11.3.3面试题17.24——*大子矩阵★★★ 11.4差分数组应用的算法设计 11.4.1LeetCode370——区间加法★★ 11.4.2LeetCode1109——航班预订统计★★ 11.4.3LeetCode2536——子矩阵元素加1★★ 推荐练习题 第12章线段树 12.1线段树概述 12.1.1线段树的定义 12.1.2简单线段树的实现 12.1.3复杂线段树的实现 12.1.4线段树的动态开点实现 12.1.5离散化 12.2简单线段树应用的算法设计 12.2.1LeetCode303——区域和检索(数组不可变)★ 12.2.2LeetCode308——二维区域和检索(可改)★★★ 12.2.3LeetCode327——区间和的个数★★★ 12.3复杂线段树应用的算法设计 12.3.1LeetCode715——Range模块★★★ 12.3.2LeetCode1622——奇妙序列★★★ 12.4离散化在线段树中的应用 12.4.1LeetCode327——区间和的个数★★★ 12.4.2LeetCode315——计算右侧小于当前元素的个数★★★ 推荐练习题 第13章树状数组 13.1树状数组概述 13.1.1树状数组的定义 13.1.2树状数组的实现 13.2树状数组应用的算法设计 13.2.1LeetCode1649——通过指令创建有序数组★★★ 13.2.2LeetCode1409——查询带键的排列★★ 13.2.3LeetCode683——k个关闭的灯泡★★★ 13.2.4LeetCode308——二维区域和检索(可改)★★★ 13.3离散化在树状数组中的应用 13.3.1LeetCode327——区间和的个数★★★ 13.3.2LeetCode315——计算右侧小于当前元素的个数★★★ 推荐练习题 第14章字典树和后缀数组 14.1字典树和后缀数组概述 14.1.1字典树 14.1.2后缀数组 14.2字典树应用的算法设计 14.2.1LeetCode208——实现Trie(前缀树)★★ 14.2.2LeetCode14——*长公共前缀★ 14.2.3LeetCode648——单词替换★★ 14.2.4LeetCode677——键值映射★★ 14.2.5LeetCode792——匹配子序列的单词数★★ 14.3后缀数组应用的算法设计 14.3.1LeetCode1698——字符串的不同子串的个数★★ 14.3.2LeetCode1044——*长重复子串★★★ 推荐练习题
展开全部

算法面试(全2册) 作者简介

李春葆,计算机学院教授,主要研究方向:数据挖掘、人工智能和软件工程。发表论文30余篇,主持和参加多项科研课题。著作教材多部。从事近30年C/C 语言、数据结构和算法设计等课程的第一线本科教学工作,具备丰富的教学经验,曾参与深圳名企的笔试和面试题库建设。

商品评论(0条)
暂无评论……
书友推荐
本类畅销
编辑推荐
返回顶部
中图网
在线客服