新書推薦:
《
大思维:哥伦比亚商学院六步创新思维模型
》
售價:NT$
332.0
《
宏观经济学(第三版)【2024诺贝尔经济学奖获奖者作品】
》
售價:NT$
709.0
《
UE5虚幻引擎必修课(视频教学版)
》
售價:NT$
505.0
《
真需求
》
售價:NT$
505.0
《
阿勒泰的春天
》
售價:NT$
230.0
《
如见你
》
售價:NT$
234.0
《
人格阴影 全新修订版,更正旧版多处问题。国际分析心理学协会(IAAP)主席力作
》
售價:NT$
305.0
《
560种野菜野果鉴别与食用手册
》
售價:NT$
305.0
|
編輯推薦: |
本书融合了同类图书的优点,采取了创新方式,精选了趣味性、实用性性强的500个应用案例,从不同难度、不同算法、不同类型和不同数据结构进行总结,满足不同层次开发人员的需求。
|
內容簡介: |
本书通过500个实例,为读者提供较为详细的练习题目,以便读者举一反三,深度学习。本书实例涉 及的算法包括搜索、回溯、递归、排序、迭代、贪心、分治和动态规划等;涉及的数据结构包括字符串、数组、 指针、区间、队列、矩阵、堆栈、链表、哈希表、线段树、二叉树、二叉搜索树和图结构等。书中所有实例均以 问题描述、问题示例、代码实现及运行结果的形式来编排。 本书语言简洁,通俗易懂,适合作为Python编程人员的入门参考书,也适合作为高等院校相关专业 “Python算法实现”课程的参考教材。
|
關於作者: |
李永华 北京邮电大学教授,博士生导师。拥有超过20年的软硬件开发经验,长期致力于物联网、云计算与人工智能的研究工作。在教学中以兴趣为导向,激发学生的创造性;以素质为基础,提高自身教学水平;以科研为手段,促进教学理念的转变,在教学与科研实践中指导学生实现300余个创新案例。主持30余项国家级与企事业单位课题的研究工作,在国内外学术期刊及会议发表论文100余篇,申请专利50余项,出版图书20余部。
|
目錄:
|
第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背包问题Ⅰ
例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因式分解
例179从集合中插入或移除元素
例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背包问题Ⅱ
例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单词拆分
第3章巩固200例
例301单例模式
例302字符串置换
例303字符串替换
例304用isSubstring判断字符串的循环移动
例305能否到达终点
例306成绩等级
例307在排序链表中插入一个节点
例308getter与setter
例309用一个数组实现3个栈
例310在链表中找节点
例311栈集
例312链表的中点
例313栈排序
例314宠物收养所
例315自动补全
例316短网址
例317拥有同样多1的下一个数
例318分解质因数
例319交换奇偶二进制位
例320丢失的数
例321黑白屏
例322方程的根
例323转换字符串到整数
例324将二叉树按照层级转化为链表
例325相亲数
例326二叉树的路径和Ⅰ
例327二叉树的路径和Ⅱ
例328丢鸡蛋
例329建立邮局
例330凑n分钱的方案数
例331三数之中的最大值
例332接雨水
例333将表达式转换为波兰表达式
例334将二叉树转换成双链表
例335将数组重新排列以构建最小值
例336动态数组ArrayList
例337找峰值
例338最长上升连续子序列
例339连续子数组求和
例340子数组求和
例341找无向图的连通块
例342硬币排成线
例343检验互联网协议(Internet Protocol,IP)地址
例344环绕字符串中的唯一子串
例345使数组元素相同的最少步数Ⅱ
例346重复的子串模式
例347恢复二叉搜索树
例348数组中最大的差值
例349判断是否可以写成k个素数之和
例350杆子分割
例351二进制手表
例352数据分段
例3531位和2位字符
例354加法数
例355具有交替位的二进制数
例356美丽的排列
例357最大值在界内的子数组个数
例358全局和局部逆序数
例359整数拆分
例360递增的三元子序列
例361重新安排行程
例362奇偶链表
例363区间和的个数
例3643的幂
例365单词长度最大积
例366矩阵注水
例367最大值
例368生成括号
例369余积
例370前一个数
例371称重问题
例372树中距离的总和
例373订单问题
例374LFU缓存
例375音乐播放表
例376阶乘
例377解码方式
例378最大树
例379单词搜索
例380LRU缓存策略
例381图书复印
例382二进制表示
例383解码方法
例384数组最大价值
例385最大字数组
例386青蛙跳
例387二叉搜索树中最接近的值
例388k步编辑
例389字符串生成器Ⅰ
例390单词合成问题
例391最长数列
例392拆分子数组
例393停车场
例394摆动排序问题Ⅰ
例395实现前缀树(Trie)
例396Geo哈希Ⅰ
例397Geo哈希Ⅱ
例398友谊服务
例399DNA重复问题
例400字模式
例401字符同构
例402课程表Ⅱ
例403吹气球
例404k个空的位置
例405逆序对
例406任务调度器
例407下一个排列Ⅱ
例408范围加法
例409n皇后问题Ⅱ
例410用递归打印数字
例411推荐朋友
例412螺母(Nuts)和螺栓(Bolts)的问题
例413Fizz Buzz问题
例414通配符匹配
例415最大子矩阵
例416更新二进制位
例417两个数组最小差问题
例418单词反转
例4194的幂
例420a b问题
例421尾部的零
例422移动的圆
例423列表扁平化
例424判断数字与字母字符
例425打印X
例426内积
例427abc串
例428最大子数组Ⅰ
例429最大子数组Ⅱ
例430最小子数组
例431最大子数组差
例432k数之和
例433用O(1)时间检测整数n是否为2的幂
例434最大数
例435插入5
例436寻找单词
例437判断连接
例438冰雹猜想
例439链表求和Ⅱ
例440程序检查
例441特殊回文字符串
例442数组压缩
例443等差矩阵
例444堆化操作
例445颜色分类
例446最长有效括号
例447分糖果
例448URL编码
例449多字符串查找
例450最大订单
例451最长字符串链
例452地图跳跃
例453查找最大因子
例454矩阵斜线上元素相同
例455最大连通面积
例456小括号匹配
例457通用子数组个数
例458最大非负子序和
例459最短休息日
例460括号得分
例461双色塔
例462考试策略
例463移动车棚
例464另一个祖玛游戏
例465罗马数字转整数
例466两个整数相除
例467滑动窗口的最大值
例468镜像数字
例469直方图中最大矩形面积
例470最长回文子串
例471乱序字符串
例472交叉字符串
例473回文链表
例474链表插入排序
例475具有最大平均数的子树
例476高度平衡二叉树
例477主元素Ⅱ
例478单词矩阵
例479电话号码的字母组合
例480会议室
例481无重叠区间
例482表达式求值
例483翻转游戏
例484迷宫
例485摆动排序问题Ⅱ
例486排颜色
例487按照颜色对数组排序
例488简化路径
例489换硬币
例490俄罗斯套娃信封
例491木材加工
例492判断数独是否合法
例493斐波那契数列
例494用栈模拟汉诺塔问题
例495字符串生成器Ⅱ
例496移动零问题
例497寻找数据错误
例498找到映射序列
例499旋转图像
例500太平洋和大西洋的水流
|
內容試閱:
|
Python语言是国内外广泛使用的计算机程序设计语言,是高等院校相关专业重要的基础语言课程。由于Python语言具有功能丰富、表达力强、使用灵活方便、应用面广、目标程序效率高、可移植性好等特点,20世纪90年代以来,在全世界被迅速推广。目前,Python仍然是全世界优秀的程序设计语言之一。
本书是作者为适应当前教育教学改革的创新要求,更好地践行语言类课程,注重实践教学与创新能力培养的需要,组织编写的教材。本书融合了同类教材的优点,采取创新方式,精选了500个趣味性、实用性强的应用实例,对不同难度、不同类型和不同数据结构的实际算法进行总结,希望起到抛砖引玉的作用。
本书的主要内容和素材来自网络上流行的各大互联网公司的面试题库(如LintCode、LeetCode等)和作者所在学校近几年承担的科研项目成果。作者所指导的研究生,在学习和研究的过程中,对应用的算法进行了总结,通过人工智能科研项目的实施,完成了整个科研项目,不仅学到了知识,提高了能力,而且为本书提供了第一手素材和相关资料。
本书内容由总到分,先启发学生思考后进行实践,算法描述与代码实现相结合,可作为从事网络开发、机器学习和算法实现等专业人员的技术参考书,也可作为大学信息与通信工程及相关专业本科生Python算法实现的教材、程序员的算法提高使用手册,还可为人工智能算法分析、算法设计、算法实现提供帮助。
本书的编写得到了电子信息类专业教学指导委员会、信息工程专业国家第一类特色专业建设项目、信息工程专业国家第二类特色专业建设项目、CDIO工程教育模式研究与实践项目、本科教学工程项目、信息工程专业北京市特色专业建设、北京市教育教学改革项目、北京邮电大学研究生教育教学改革项目(2022Y005)等的大力支持,在此表示感谢!
由于作者经验与水平有限,书中疏漏及不当之处在所难免,衷心希望各位读者多提宝贵意见及具体的修改建议,以便作者进一步修改和完善。
李永华
2023年3月于北京邮电大学
|
|