-
内容大纲
本书是《算法设计与分析》(第3版·微课视频·题库版)(李春葆等,清华大学出版社,以下简称为《教程》)的配套在线编程实验指导书,精选了LeetCode、LintCode、POJ和HDU平台上的186道在线编程题,并予以深入剖析和解答,这些题目涵盖基础数据结构、递归、穷举法、分治法、回溯法、分支限界法、动态规划、回溯法和计算几何等知识点,其中部分题目采用多种算法策略求解,通过研习有助于提高读者灵活运用算法设计策略解决实际问题的能力。
本书自成一体,可以脱离《教程》单独使用,适合高等院桉校计算机及相关专业学生和编程爱好者学习参考。 -
作者介绍
李春葆,武汉大学计算机学院教授。主要研究方向为数据挖掘和算法设计,先后主持和参加多个大型研究项目。主要为本科生讲授数据结构(15年以上)和软件工程等课程,为研究生讲授软件开发新技术、数据仓库与数据挖掘等课程,并出版十多部精品著作。 -
目录
第1章 绪论
1.1 LintCode1200——相对排名★
1.2 LintCode1901——有序数组的平方★
1.3 LintCode211——字符串置换★
1.4 LintCode772——错位词分组★★
1.5 LintCode55——比较字符串★
1.6 LintCode460——在排序数组中找最接近的k个数★★
1.7 LintCode424——求迎波兰表达式的值★★
1.8 LintCode1369——最频繁单词★
1.9 LeetCode20——有效的括号★
1.10 LeetCode1190——反转每对括号间的子串★★
1.11 LeetCode496——下一个更大元素Ⅰ★
1.12 LeetCode217——存在重复元素★
1.13 LeetCode3——无重复字符的最长子串★★
1.14 POJ3664——选举时间
1.15 POJ2833——平均数
1.16 POJ2491——寻宝游戏
第2章 递归算法设计技术
2.1 LintCode452——删除链表中的元素★
2.2 LintCode217——无序链表中重复项的删除★
2.3 LintCode221——链表求和Ⅱ★★
2.4 LintCode1181——二叉树的直径★
2.5 LintCode1137——从二叉树构建字符串★
2.6 LintCode649——二叉树的翻转★★
2.7 LintCode424——求迎波兰表达式的值★★
2.8 LeetCode50——Pow(x,n)★★
2.9 LeetCode231——2的幂★
2.10 LeetCode44——通配符的匹配★★★
2.11 LeetCode1190——反转每对括号间的子串★★
2.12 LeetCode59——螺旋矩阵Ⅱ★★
2.13 LeetCode1106——解析布尔表达式★★★
2.14 POJ1664——放苹果
2.15 POJ1747——表达式
2.16 POJ1941——Sierpinski分形
2.17 POJ3752——字母旋转游戏
第3章 穷举法
3.1 LintCode1068——寻找数组的中心索引★
3.2 LintCode1517——最大子数组★
3.3 LintCode1338——停车困境★
3.4 LintCode993——数组划分Ⅰ★
3.5 LintCode406——和大于s的最小子数组★★
3.6 LintCode1331——英语软件★
3.7 LintCode397——最长上升连续子序列★
3.8 LeetCode1534——统计好三元组★
3.9 LeetCode204——计数质数★★
3.10 LeetCode187——重复的DNA序列★★
3.11 LeetCode2018——判断单词是否能放入填字游戏内★★
3.12 LeetCode2151——基于陈述统计最多好人数★★★
3.13 POJ2000——金币
3.14 POJ1013——假币问题
3.15 POJ1256——字谜
3.16 POJ3187——倒数和
第4章 分治法
4.1 LintCode1376——等价字符串★★
4.2 LintCode31——数组的划分★★
4.3 LintCode143——颜色的分类Ⅱ★★
4.4 LintCode628——最大子树★
4.5 LintCode900——二叉搜索树中最接近的值★
4.6 LintCode931——k个有序数组的中位数★★★
4.7 LintCode1817——分享巧克力★★★
4.8 LintCode1753——写作业★★
4.9 LintCode460——在排序数组中找最接近的k个数★★
4.10 LintCode75——寻找峰值★★
4.11 LeetCode912——排序数组★★
4.12 LeetCode241——为运算表达式设计优先级★★
4.13 LeetCode4——寻找两个正序数组的中位数★★★
4.14 LeetCode148——排序链表★★
4.15 LeetCode493——翻转对★★★
4.16 LeetCode1985——找出数组中第k大的整数★★
4.17 POJ2299——Ultra-QuickSort
4.18 POJ2623——中位数
4.19 POJ3104——烘干
4.20 POJ3273——每月花费
第5章 回溯法
5.1 LintCode1353——根结点到叶子结点求和★★
5.2 LintCode802——数独★★
5.3 LintCode135——数字组合★★
5.4 LintCode1915——举重★★★
5.5 LintCode680——分割字符串★★
5.6 LintCode136——分割回文串★★
5.7 LintCode816——旅行商问题★★★
5.8 LeetCode784——字母大小写全排列★★
5.9 LeetCode1079——活字印刷★★
5.10 LeetCode93——复原IP地址★★
5.11 LeetCode22——括号的生成★★
5.12 LeetCode89——格雷编码★★
5.13 LeetCode301——删除无效的括号★★★
5.14 POJ3050——跳房子
5.15 POJ1724——道路
5.16 POJ1699——最佳序列
5.17 POJ1564——求和
5.18 POJ2245——组合
5.19 POJ1321——棋盘问题
5.20 POJ2488——骑士之旅
第6章 分支限界法
6.1 LintCode1376——通知所有员工所需的时间★★
6.2 LintCode1504——获取所有钥匙的最短路径★★★
6.3 LintCode1685——迷宫Ⅳ★★
6.4 LintCode1428——钥匙和房间★★
6.5 LintCode531——六度问题★★
6.6 LintCode120——单词接龙★★★
6.7 LintCode1888——矩阵中的最短路径★★
6.8 LintCode803——建筑物之间的最短距离★★★
6.9 LeetCode1020——飞地的数量★★
6.10 LeetCode752——打开转盘锁★★
6.11 LeetCode773——滑动谜题★★★
6.12 POJ1724——道路
6.13 POJ2449——第K条最短路径长度
6.14 POJ1376——机器人
第7章 动态规划
7.1 LintCode41——最大子数组★
7.2 LintCode110——最小路径和★
7.3 LintCode118——不同的子序列★★
7.4 LintCode1147——工作安排★★
7.5 LintCode553——炸弹袭击★★
7.6 LintCode107——单词拆分Ⅰ
7.7 LintCode436——最大正方形★★
7.8 LintCode394——硬币排成线★★
7.9 LintCode125——背包问题Ⅱ★★
7.10 LintCode440——背包问题Ⅲ★★
7.11 LintCode563——背包问题Ⅴ★★
7.12 LintCode669——换硬币★★
7.13 LintCode94——二叉树中的最大路径和★★
7.14 LintCode1306——旅行计划Ⅱ★★★
7.15 LeetCode121——买卖股票的最佳时机★
7.16 LeetCode122——买卖股票的最佳时机Ⅱ★★
7.17 LeetCode123——买卖股票的最佳时机Ⅲ★★★
7.18 LeetCode188——买卖股票的最佳时机Ⅳ★★★
7.19 LeetCode309——买卖股票的最佳时机(含冷冻期)★★
7.20 LeetCode714——买卖股票的最佳时机(含手续费)★★
7.21 LeetCode91——解码方法★★
7.22 LeetCode650——只有两个键的键盘★★
7.23 LeetCode44——通配符的匹配★★★
7.24 LeetCode10——正则表达式的匹配★★★
7.25 LeetCode5——最长回文子串★★
7.26 LeetCode516——最长回文子序列★★
7.27 POJ2533——最长递增子序列
7.28 POJ1458——公共子序列
7.29 POJ1837——平衡
7.30 POJ3624——手链
7.31 POJ1276——取款机
7.32 POJ1947——重建道路
7.33 POJ2904——邮箱制造商问题
第8章 贪心法
8.1 LintCode920——会议室★
8.2 LintCode919——会议室Ⅱ★Ⅱ
8.3 LintCode184——最大数★★
8.4 LintCode187——加油站★★
8.5 LintCode304——最大乘积★★
8.6 LintCode358——树木规划★★
8.7 LintCode719——计算最大值★★
8.8 LintCode761——最小子集★★
8.9 LintCode891——有效回文Ⅱ★★
8.10 LeetCode122——买卖股票的最佳时机Ⅱ★★
8.11 LeetCode11——盛水最多的容器★★
8.12 LeetCode881——救生艇★★
8.13 LeetCode1029——两地调度★★
8.14 LeetCode402——移掉k位数字★★
8.15 LeetCode763——划分字母区间★★
8.16 LeetCode630——课程表Ⅲ★★★
8.17 LeetCode1353——最多可以参加的会议数目★★
8.18 POJ2782——装箱
8.19 POJ3069——标记
8.20 POJ1017——产品包装
8.21 POJ1862——Stripies
8.22 POJ3262——保护花朵
8.23 POJ2970——懒惰的程序员
8.24 POJ1065——加工木棍
第9章 图算法
9.1 LintCode1565——飞行棋Ⅰ★★
9.2 LeetCode1368——至少有一条有效路径的最小代价★★★
9.3 POJ1751——高速公路问题
9.4 POJ1287——网络
9.5 POJ1251——维护村庄之路
9.6 POJ2349——北极网络
9.7 POJ2387——贝西回家
9.8 POJ1125——股票经纪人的小道消息
9.9 POJ1724——道路
9.10 POJ1087——插头
9.11 HDU1535——最小总费用
9.12 HDU1874——畅通工程
9.13 HDU3572——任务调度
第10章 计算几何
10.1 LeetCode223——矩形面积★★
10.2 LeetCode963——最小面积矩形Ⅱ★★
10.3 LeetCode149——直线上最多的点数★★★
10.4 POJ1269——线段交点
10.5 POJ2653——捡棍子
10.6 POJ2318——玩具
10.7 POJ1696——太空蚂蚊
10.8 POJ2187——选美比赛
10.9 HDU1115——抬起石头
10.10 HDU4643——GSM
10.11 HDU1348——墙
10.12 HDU5721——宫殿
10.13 HDU3007——导弹
附录A 在线编程实验报告示例
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...