內容簡介
本書通過500個實例,為讀者提供較為詳細的練習題目,以便讀者舉一反三,深度學習。
本書實例涉及的演算法包括搜索、回溯、遞歸、排序、迭代、貪心、分治和動態規劃等;涉及的數據結構包括字元串、數組、指針、區間、隊列、矩陣、堆棧、鏈表、哈希表、線段樹、二叉樹、二叉搜索樹和圖結構等。書中所有實例均以問題描述、問題示例、代碼實現及運行結果的形式來編排。
本書語言簡潔,通俗易懂,適合作為Python編程人員的入門參考書,也適合作為高等院校相關專業「Python演算法實現」課程的參考教材。
作者簡介
李永華 北京郵電大學教授,博士生導師。擁有超過20年的軟硬體開發經驗,長期致力於物聯網、雲計算與人工智能的研究工作。在教學中以興趣為導向,激發學生的創造性;以素質為基礎,提高自身教學水平;以科研為手段,促進教學理念的轉變,在教學與科研實踐中指導學生實現300餘個創新案例。主持30餘項國家級與企事業單位課題的研究工作,在國內外學術期刊及會議發表論文100餘篇,申請專利50餘項,出版圖書20餘部。
精彩書評
★Python是功能強大的編程語言。現階段,我國在人工智能領域的投入不斷加大,聚焦于當前業界的需求,學好Python語言,是實現高薪就業的很好選擇。
——史卓琦,中國產業發展研究院執行院長/中國發展網執行副總裁
★Python具有免費開源、可移植、可擴展、可嵌入的獨特優勢,反應快速且內置了豐富的標準體系,已應用於越來越多的行業。但是,目前關於Python的圖書大多數以介紹基礎知識為主,《Python編程500例——快速構建可執行高質量代碼》通過對500個貼近生活的案例進行講解,兼顧深度與廣度,內容覆蓋面廣,可以幫助讀者快速入門,真正提高項目實戰能力。
——魏鴻,北京兩化聯盟秘書長
★《Python編程500例——快速構建可執行高質量代碼》融合同類圖書的優點,採取創新方式,精選趣味性、實用性強的500個應用實例,從不同難度、不同演算法、不同類型和不同數據結構進行總結,方便讀者查詢和應用。
——陳新河,中關村大數據產業聯盟副秘書長
★《Python編程500例——快速構建可執行高質量代碼》給出以Python語言實現案例設計的全部過程,包括問題、示例、實現及結果,並給出多種經典演算法的具體應用,如搜索、遞歸、回溯、排序等,是一部內容豐富且極具實用性的著作。
——田啟家,北京企業轉型升級服務聯盟秘書長
★《Python編程500例——快速構建可執行高質量代碼》是一部Python編程實踐的指導性著作,能夠培養讀者對編程的興趣,提高讀者編寫代碼的水平,可作為各高校相關專業學生及工程技術人員快速學習Python的參考用書。
——董宇,中關村智能硬體產業聯盟秘書長
目錄
第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個節點
第2章 提高200例
第3章 鞏固200例
前言/序言
Python語言是國內外廣泛使用的計算機程序設計語言,是高等院校相關專業重要的基礎語言課程。由於Python語言具有功能豐富、表達力強、使用靈活方便、應用面廣、目標程序效率高、可移植性好等特點,20世紀90年代以來,在全世界被迅速推廣。目前,Python仍然是全世界優秀的程序設計語言之一。
本書是作者為適應當前教育教學改革的創新要求,更好地踐行語言類課程,注重實踐教學與創新能力培養的需要,組織編寫的教材。本書融合了同類教材的優點,採取創新方式,精選了500個趣味性、實用性強的應用實例,對不同難度、不同類型和不同數據結構的實際演算法進行總結,希望起到拋磚引玉的作用。
本書的主要內容和素材來自網路上流行的各大互聯網公司的面試題庫(如LintCode、LeetCode等)和作者所在學校近幾年承擔的科研項目成果。作者所指導的研究生,在學習和研究的過程中,對應用的演算法進行了總結,通過人工智能科研項目的實施,完成了整個科研項目,不僅學到了知識,提高了能力,而且為本書提供了第一手素材和相關資料。
本書內容由總到分,先啟發學生思考後進行實踐,演算法描述與代碼實現相結合,可作為從事網路開發、機器學習和演算法實現等專業人員的技術參考書,也可作為大學信息與通信工程及相關專業本科生Python演算法實現的教材、程序員的演算法提高使用手冊,還可為人工智能演算法分析、演算法設計、演算法實現提供幫助。
本書的編寫得到了教育部電子信息類專業教學指導委員會、信息工程專業國家第一類特色專業建設項目、信息工程專業國家第二類特色專業建設項目、教育部CDIO工程教育模式研究與實踐項目、教育部本科教學工程項目、信息工程專業北京市特色專業建設、北京市教育教學改革項目、北京郵電大學研究生教育教學改革項目(2022Y005)等的大力支持,在此表示感謝!
由於作者經驗與水平有限,書中疏漏及不當之處在所難免,衷心希望各位讀者多提寶貴意見及具體的修改建議,以便作者進一步修改和完善。
李永華
2023年3月于北京郵電大學