Python编程300例——快速构建可执行高质量代码

Python编程300例——快速构建可执行高质量代码"

作者:李永华
ISBN:9787302547174
定价:¥89
字数:千字
页数:
出版时间:2020.06.01
开本:
版次:1-5
装帧:
出版社:清华大学出版社
简介

本书以人工智能发展为时代背景,通过实际案例应用描述算法,为Python程序员提供较为详细的实战方案,以便深度学习。主要从算法上分为数学、搜索、回溯、递归、排序、迭代、贪心、分治和动态规划等;从数据结构上分为字符串、数组、指针、区间、队列、矩阵、堆栈、链表、哈希表、线段树、二叉树、二叉搜索树和图结构等。针对经典算法,结合相关的数据结构,从描述问题、问题示例、代码实现以及运行结果相结合,语言简洁,深入浅出,通俗易懂,不仅适合对Python编程有兴趣的科研人员,也适合高等院校作为参考教材。

前言

Python语言是广泛使用的计算机程序设计语言,是高等院校相关专业重要的专业基础课程。由于Python语言具有功能丰富、表达能力强、使用灵活方便、应用面广、目标程序效率高、可移植性好等诸多特点,20世纪90年代以来,Python语言迅速在全世界普及推广。目前,Python仍然是全世界最优秀的程序设计语言之一。

本书是作者为适应当前教育教学改革的创新要求,更好地践行语言类课程,满足实践教学与创新能力培养的需要,组织编写的教材。本书融合了同类教材的优点,采取创新方式,精选了300个趣味性、实用性强的应用实例,从不同难度、不同算法、不同类型和不同数据结构等方面,将实际算法进行总结,希望为Python编程人员抛砖引玉。

本书的主要内容和素材来自网络上流行的各大互联网公司的面试算法、LintCode、LeetCode、九章算法和作者所在学校近几年承担的科研项目成果。作者所指导的研究生,在研究过程中对学习和应用的算法进行了总结,通过人工智能科研项目的实施,完成了整个科研项目,不仅学到了知识,提高了能力,而且为本书提供了第一手素材和相关资料。

本书内容由总到分,先思考后实践,算法描述与代码实现相结合,可以作为从事网络开发、机器学习和算法实现的专业技术人员主要的技术参考书,也可以作为大学信息与通信工程及相关领域的Python算法实现的本科生教材,还可作为程序员算法提高的使用手册,同时可以为人工智能算法分析、算法设计、算法实现提供帮助。

本书的编写得到了教育部电子信息类专业教学指导委员会、信息工程专业国家第一类和第二类特色专业建设项目、教育部CDIO工程教育模式研究与实践项目、教育部本科教学工程项目、信息工程专业北京市特色专业建设、北京市教育教学改革项目、北京邮电大学创新创业教育精品课程项目的大力支持,在此表示感谢!

由于作者经验与水平有限,书中疏漏及不妥之处在所难免,衷心地希望各位读者多提宝贵意见及具体的修改建议,以便作者进一步修改和完善。

李永华

2020年2月于北京邮电大学

目录

第1章入门100例

例1反转一个3位整数

例2合并排序数组

例3旋转字符串

例4相对排名

例5二分查找

例6下一个更大的数

例7字符串中的单词数

例8勒索信

例9不重复的两个数

例10双胞胎字符串

例11最接近target的值

例12点积

例13函数运行时间

例14查询区间

例15飞行棋

例16移动石子

例17数组剔除元素后的乘积

例18键盘的一行

例19第n个数位

例20找不同

例21第k个组合

例22平面列表

例23子域名访问计数

例24最长AB子串

例25删除字符

例26字符串写入的行数

例27独特的莫尔斯码

例28比较字符串

例29能否转换

例30经典二分查找问题

例31抽搐词

例32排序数组中最接近元素

例33构造矩形

例34两个排序数组合的第k小元素

例35玩具工厂

例36形状工厂

例37二叉树最长连续序列

例38首字母大写

例39七进制

例40查找数组中没有出现的所有数字

例41回旋镖的数量

例42合并排序数组

例43最小路径和

例44大小写转换

例45原子的数量

例46矩阵中的最长递增路径

例47大小写转换

例48水仙花数

例49余弦相似度

例50链表节点计数

例51最高频的k个单词

例52单词的添加与查找

例53石子归并

例54简单计算器

例55数组第2大数

例56二叉树叶子节点之和

例57二叉树的某层节点之和

例58判断尾数

例59两个字符串是变位词

例60最长单词

例61机器人能否返回原点

例62链表倒数第n个节点

例63链表求和

例64删除元素

例65克隆二叉树

例66合并两个排序链表

例67反转整数

例68报数

例69完全二叉树

例70对称二叉树

例71扭转后等价的二叉树

例72岛屿的个数

例73判断是否为平方数之和

例74滑动窗口内数的和

例75总汉明距离

例76硬币摆放

例77字母大小写转换

例78二进制表示中质数个计算置位

例79最少费用的爬台阶方法

例80中心索引

例81词典中最长的单词

例82重复字符串匹配

例83不下降数组

例84最大的回文乘积

例85补数

例86加热器

例87将火柴摆放成正方形

例88可怜的猪

例89循环数组中的环

例90分饼干

例91翻转字符串中的元音字母

例92翻转字符串

例93使数组元素相同的最少步数

例94加油站

例95春游

例96合法数组

例97删除排序数组中的重复数字

例98字符串的不同排列

例99全排列

例100带重复元素的排列

第2章提高200例

例101插入区间

例102n皇后问题

例103主元素

例104字符大小写排序

例105上一个排列

例106下一个排列

例107二叉树的层次遍历

例108最长公共子串

例109最近公共祖先

例110k数和

例111有序链表转换为二分查找树

例112最长连续序列

例113背包问题1

例114拓扑排序

例115克隆图

例116不同的二叉查找树

例117汉诺塔

例118图中两个点之间的路线

例119丢失的第1个正整数

例120寻找缺失的数

例121排列序号Ⅰ

例122排列序号Ⅱ

例123最多有k个不同字符的最长子串

例124第k个排列

例125飞机数

例126格雷编码

例127迷你Cassandra

例128网络日志

例129栅栏染色

例130房屋染色

例131去除重复元素

例132左填充

例133负载均衡器

例134两数和的最接近值

例135打劫房屋

例136左旋右旋迭代器

例137n数组第k大元素

例138前k大数

例139计数型布隆过滤器

例140字符计数

例141最长重复子序列

例142僵尸矩阵

例143摊平二维向量

例144第k大的元素

例145两数和小于或等于目标值

例146两数差等于目标值

例147骑士的最短路线

例148k个最近的点

例149优秀成绩

例150二叉树的最长连续子序列Ⅰ

例151二叉树的最长连续子序列Ⅱ

例152课程表

例153安排课程

例 154单词表示数字

例155最大子序列的和

例156移除子串

例157数组划分

例158矩形重叠

例159最长回文串

例160最大子树

例161最小生成树

例162骑士的最短路径

例163最大矩阵

例164二叉树的最大节点

例165寻找重复的数

例166拼字游戏

例167132模式识别

例168检查缩写字

例169一次编辑距离

例170数据流滑动窗口平均值

例171最长绝对文件路径

例172识别名人

例173第一个独特字符位置

例174子串字谜

例175单词缩写集

例176二叉树翻转

例177二叉树垂直遍历

例178因式分解

例179Insert Delete GetRandom O(1)

例180编码和解码字符串

例181猜数游戏

例182数1的个数

例183平面范围求和——不可变矩阵

例184猜数游戏

例185最长的回文序列

例1861和0

例187预测能否胜利

例188循环单词

例189最大子数组之和为k

例190等差切片

例1912D战舰

例192连续数组

例193带有冷却时间的买卖股票最佳时间

例194小行星的碰撞

例195扩展弹性词

例196找到最终的安全状态

例197使序列递增的最小交换次数

例198所有可能的路径

例199合法的井字棋状态

例200满足要求的子串个数

例201多米诺和三格骨牌铺瓦问题

例202逃离幽灵

例203寻找最便宜的航行旅途(最多经过k个中转站)

例204图是否可以被二分

例205森林中的兔子

例206最大分块排序

例207分割标签

例208网络延迟时间

例209洪水填充

例210映射配对之和

例211最长升序子序列的个数

例212最大的交换

例213将数组拆分成含有连续元素的子序列

例214Dota2参议院

例215合法的三角数

例216在系统中找到重复文件

例217两个字符串的删除操作

例218下一个更大的元素

例219最优除法

例220通过删除字母匹配到字典里最长单词

例221寻找树中最左下节点的值

例222出现频率最高的子树和

例223寻找BST的modes

例224对角线遍历

例225提莫攻击

例226目标和

例227升序子序列

例228神奇字符串

例229爆破气球的最小箭头数

例230查找数组中的所有重复项

例231最小基因变化

例232替换后的最长重复字符

例233从英文中重建数字

例234数组中两个数字的最大异或

例235根据身高重排队列

例236左叶子的和

例237移除k位

例238轮转函数

例239字符至少出现k次的最长子串

例240消除游戏

例241有序矩阵中的第k小元素

例242超级幂次

例243水罐问题

例244计算不同数字整数的个数

例245最大乘积路径

例246矩阵找数

例247路径数计算

例248卡牌游戏

例249词频统计

例250查找子数组

例251最小子矩阵

例252最佳购物计划

例253询问冷却时间

例254树上最长路径

例255取数游戏

例256数组求和

例257最短短语

例258频率最高的词

例259判断三角形

例260最大矩阵边界和

例261卡牌游戏

例262停车问题

例263爬楼梯

例264最小字符串

例265目的地的最短路径

例266毒药测试

例267社交网络

例268前k高的基点

例269寻找最长01子串

例270合法字符串

例271叶节点的和

例272转换字符串

例273最少按键次数

例274二分查找

例275全排列

例276最小路径和

例277最长路径序列

例278背包问题2

例279哈希函数

例280第1个只出现1次的字符

例281空格替换

例282字符串压缩

例283数组的最大值

例284无序链表的重复项删除

例285在O(1)时间复杂度删除链表节点

例286将数组重新排序以构造最小值

例287两个链表的交叉

例288螺旋矩阵

例289三角形计数

例290买卖股票的最佳时机

例291加1

例292炸弹袭击

例293组合总和

例294向循环有序链表插入节点

例295大岛的数量

例296最短回文串

例297不同的路径

例298分割字符串

例299缺失的第1个素数

例300单词拆分

参考文献

作者简介

编辑推荐

本书针对经典算法,结合相关的数据结构,从描述问题、问题示例、代码实现以及运行结果相结合,语言简洁,深入浅出,通俗易懂,不仅适合对Python编程有兴趣的科研人员,也适合高等院校作为参考教材。

作者寄语

李永华,现执教于北京邮电大学,拥有超过10年的嵌入式开发经验,致力于物联网、云计算与大数据的研究工作。在教学中善于以兴趣为导向,激发学生的创造性;以素质为基础,提高自身教学水平;以科研为手段,促进教学理念的转变。在研发及教学实践中指导学生实现500个创新案例,参与了30余项国家级、企业组织的理论研究和工程项目,在国内外学术期刊以及会议发表论文60余篇,申请专利40余项,出版教材10余部。

电子资料

www.luweidong.cn

下一个