![]()
内容推荐 本书是《算法设计与分析》(第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 |