注冊(cè) | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當(dāng)前位置: 首頁出版圖書科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)操作系統(tǒng)算法面試

算法面試

算法面試

定 價(jià):¥198.00

作 者: 李春葆、李筱馳
出版社: 清華大學(xué)出版社
叢編項(xiàng):
標(biāo) 簽: 暫缺

ISBN: 9787302673989 出版時(shí)間: 2024-10-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  本書旨在幫助讀者更好地應(yīng)對(duì)算法面試,提高算法和編程能力。書中按專題精選了LeetCode平臺(tái)的一系列的熱點(diǎn)算法題,并詳細(xì)解釋其求解思路和過程。全書分為三個(gè)部分,第Ⅰ部分為數(shù)據(jù)結(jié)構(gòu)及其應(yīng)用,以常用數(shù)據(jù)結(jié)構(gòu)為主題,深入講解各種數(shù)據(jù)結(jié)構(gòu)的應(yīng)用方法和技巧。第Ⅱ部分為算法策略及其應(yīng)用,以基本算法設(shè)計(jì)方法和算法設(shè)計(jì)策略為主題,深入講解各種算法設(shè)計(jì)策略的應(yīng)用方法和技巧。第Ⅲ部分為經(jīng)典問題及其求解,以實(shí)際中的一些問題為主題,深入講解這些問題多種求解方法。本書適合于需要進(jìn)行算法面試的讀者,通過閱讀本書可以掌握算法面試中求解問題的方法和技巧,提升自己的算法技能和思維方式,從而在面試中脫穎而出。同時(shí)可以作為《數(shù)據(jù)結(jié)構(gòu)》和《算法設(shè)計(jì)與分析》課程的輔導(dǎo)書,也可以供各種程序設(shè)計(jì)競(jìng)賽和計(jì)算機(jī)編程愛好者研習(xí)。目錄

作者簡(jiǎn)介

  李春葆,計(jì)算機(jī)學(xué)院教授,主要研究方向:數(shù)據(jù)挖掘、人工智能和軟件工程。發(fā)表論文30余篇,主持和參加多項(xiàng)科研課題。著作教材多部。從事近30年C/C語言、數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計(jì)等課程的第一線本科教學(xué)工作,具備豐富的教學(xué)經(jīng)驗(yàn),曾參與深圳名企的筆試和面試題庫建設(shè)。

圖書目錄

掃一掃
配套資源
 
第一部分?jǐn)?shù)據(jù)結(jié)構(gòu)及其應(yīng)用
第1章數(shù)組
1.1數(shù)組概述
1.1.1數(shù)組的定義
1.1.2數(shù)組的知識(shí)點(diǎn)
1.2數(shù)組的基本算法設(shè)計(jì)
1.2.1LeetCode27——移除元素★
1.2.2LeetCode283——移動(dòng)0★
1.2.3LeetCode2460——對(duì)數(shù)組執(zhí)行操作★
1.2.4LeetCode75——顏色的分類★★
1.2.5LeetCode189——輪轉(zhuǎn)數(shù)組★★
1.3有序數(shù)組的算法設(shè)計(jì)
1.3.1LeetCode26——刪除有序數(shù)組中的重復(fù)項(xiàng)★
1.3.2LeetCode80——刪除有序數(shù)組中的重復(fù)項(xiàng)Ⅱ★★
1.3.3LeetCode1287——有序數(shù)組中出現(xiàn)次數(shù)超過元素總數(shù)25%的
元素★
1.3.4LeetCode1200——最小絕對(duì)差★
1.3.5LeetCode88——合并兩個(gè)有序數(shù)組★
1.3.6LeetCode349——兩個(gè)數(shù)組的交集★
1.3.7LeetCode977——有序數(shù)組的平方★
1.3.8LeetCode1470——重新排列數(shù)組★
1.3.9LeetCode1213——3個(gè)有序數(shù)組的交集★
1.3.10LeetCode264——丑數(shù)Ⅱ★★
1.3.11LeetCode373——查找和最小的k對(duì)數(shù)字★★
推薦練習(xí)題
第2章鏈表
2.1鏈表概述
2.1.1鏈表的定義
2.1.2鏈表的知識(shí)點(diǎn)
2.2鏈表基本操作的算法設(shè)計(jì)
2.2.1LeetCode203——移除鏈表元素★
2.2.2LeetCode206——反轉(zhuǎn)鏈表★
2.2.3LeetCode328——奇偶鏈表★★
2.2.4LeetCode61——旋轉(zhuǎn)鏈表★★
2.2.5LeetCode141——環(huán)形鏈表★
2.2.6LeetCode138——復(fù)制帶隨機(jī)指針的鏈表★★
2.2.7LeetCode707——設(shè)計(jì)鏈表★★
2.3鏈表的分組算法設(shè)計(jì)
2.3.1LeetCode92——反轉(zhuǎn)鏈表Ⅱ★★
2.3.2LeetCode24——兩兩交換鏈表中的結(jié)點(diǎn)★★
2.3.3LeetCode25——k個(gè)一組翻轉(zhuǎn)鏈表★★★
2.4有序鏈表的算法設(shè)計(jì)
2.4.1LeetCode83——刪除排序鏈表中的重復(fù)元素★
2.4.2LeetCode82——刪除排序鏈表中的重復(fù)元素Ⅱ★★
2.4.3LeetCode21——合并兩個(gè)有序鏈表★
2.4.4LeetCode23——合并k個(gè)有序鏈表★★★
2.4.5LeetCode1634——求兩個(gè)多項(xiàng)式鏈表的和★★
推薦練習(xí)題
第3章棧
3.1棧概述
3.1.1棧的定義
3.1.2棧的知識(shí)點(diǎn)
3.2擴(kuò)展棧的算法設(shè)計(jì)
3.2.1LeetCode1381——設(shè)計(jì)一個(gè)支持增量操作的?!铩?br />3.2.2LeetCode155——最小棧★
3.2.3LeetCode716——最大?!铩铩?br />3.3棧應(yīng)用的算法設(shè)計(jì)
3.3.1LeetCode1544——整理字符串★★
3.3.2LeetCode71——簡(jiǎn)化路徑★★
3.3.3LeetCode1441——用棧操作構(gòu)建數(shù)組★
3.3.4LeetCode946——驗(yàn)證棧序列★★
3.3.5LeetCode20——有效的括號(hào)★
3.3.6LeetCode1249——刪除無效的括號(hào)★★
3.3.7LeetCode32——最長的有效括號(hào)子串的長度★★★
3.4單調(diào)棧應(yīng)用的算法設(shè)計(jì)
3.4.1LeetCode503——下一個(gè)更大元素Ⅱ★★
3.4.2LeetCode496——下一個(gè)更大元素Ⅰ★
3.4.3LeetCode739——每日溫度★★
3.4.4LeetCode316——去除重復(fù)字母★★
3.4.5LeetCode84——柱狀圖中最大的矩形★★★
3.4.6LeetCode42——接雨水★★★
推薦練習(xí)題
第4章隊(duì)列和雙端隊(duì)列
4.1隊(duì)列和雙端隊(duì)列概述
4.1.1隊(duì)列和雙端隊(duì)列的定義
4.1.2隊(duì)列和雙端隊(duì)列的知識(shí)點(diǎn)
4.2擴(kuò)展隊(duì)列的設(shè)計(jì)
4.2.1LeetCode622——設(shè)計(jì)循環(huán)隊(duì)列★★
4.2.2LeetCode641——設(shè)計(jì)循環(huán)雙端隊(duì)列★★
4.2.3LeetCode1670——設(shè)計(jì)前中后隊(duì)列★★
4.2.4LeetCode232——用棧實(shí)現(xiàn)隊(duì)列★
4.3隊(duì)列的應(yīng)用
4.3.1LeetCode1700——無法吃午餐的學(xué)生的數(shù)量★
4.3.2LeetCode933——最近的請(qǐng)求次數(shù)★
4.3.3LeetCode225——用隊(duì)列實(shí)現(xiàn)?!?br />4.3.4LeetCode281——鋸齒迭代器★★
4.3.5LeetCode1047——刪除字符串中所有的相鄰重復(fù)項(xiàng)★
4.4單調(diào)隊(duì)列
4.4.1LeetCode239——滑動(dòng)窗口的最大值★★★
4.4.2LeetCode1438——絕對(duì)差不超過限制的最長連續(xù)子數(shù)組★★
4.4.3LCR184——設(shè)計(jì)自助結(jié)算系統(tǒng)★★
推薦練習(xí)題
第5章哈希表
5.1哈希表概述
5.1.1哈希表的定義
5.1.2哈希表的知識(shí)點(diǎn)
5.2哈希表的實(shí)現(xiàn)
5.2.1LeetCode705——設(shè)計(jì)哈希集合★
5.2.2LeetCode706——設(shè)計(jì)哈希映射★
5.3哈希集合應(yīng)用的算法設(shè)計(jì)
5.3.1LeetCode349——兩個(gè)數(shù)組的交集★
5.3.2LeetCode202——快樂數(shù)★
5.3.3LeetCode217——存在重復(fù)元素★
5.3.4LeetCode379——電話目錄管理系統(tǒng)★★
5.3.5LeetCode128——最長連續(xù)序列★★
5.3.6LeetCode41——缺失的第一個(gè)正數(shù)★★★
5.3.7LeetCode1436——旅行終點(diǎn)站★
5.4哈希映射應(yīng)用的算法設(shè)計(jì)
5.4.1LeetCode350——兩個(gè)數(shù)組的交集Ⅱ★
5.4.2LeetCode1460——通過翻轉(zhuǎn)子數(shù)組使兩個(gè)數(shù)組相等★
5.4.3LeetCode383——贖金信★
5.4.4LeetCode347——前k個(gè)高頻元素★★
5.4.5LeetCode242——有效的字母異位詞★
5.4.6LeetCode205——同構(gòu)字符串★
5.4.7LeetCode1——兩數(shù)之和★
5.4.8LeetCode219——存在重復(fù)元素Ⅰ★
5.4.9LeetCode49——字母異位詞的分組★★
5.4.10LeetCode249——移位字符串的分組★★
推薦練習(xí)題
第6章二叉樹
6.1二叉樹概述
6.1.1二叉樹的定義
6.1.2二叉樹的知識(shí)點(diǎn)
6.2二叉樹先序、中序和后序遍歷應(yīng)用的算法設(shè)計(jì)
6.2.1LeetCode144——二叉樹的先序遍歷★
6.2.2LeetCode94——二叉樹的中序遍歷★
6.2.3LeetCode145——二叉樹的后序遍歷★
6.2.4LeetCode965——單值二叉樹★
6.2.5LeetCode100——相同的樹★
6.2.6LeetCode572——另一棵樹的子樹★
6.2.7LeetCode543——二叉樹的直徑★
6.2.8LeetCode563——二叉樹的坡度★
6.2.9LeetCode2331——計(jì)算二叉樹的布爾運(yùn)算值★
6.2.10LeetCode199——二叉樹的右視圖★★
6.2.11LeetCode662——二叉樹的最大寬度★★
6.3二叉樹層次遍歷應(yīng)用的算法設(shè)計(jì)
6.3.1LeetCode102——二叉樹的層次遍歷★★
6.3.2LeetCode199——二叉樹的右視圖★★
6.3.3LeetCode637——二叉樹的層平均值★
6.3.4LeetCode2471——逐層排序二叉樹所需的最少操作數(shù)目★★
6.3.5LeetCode2415——反轉(zhuǎn)二叉樹的奇數(shù)層★★
6.3.6LeetCode1602——找二叉樹中最近的右側(cè)結(jié)點(diǎn)★★
6.4構(gòu)造二叉樹的算法設(shè)計(jì)
6.4.1LeetCode105——由先序與中序遍歷序列構(gòu)造二叉樹★★
6.4.2LeetCode106——由中序與后序遍歷序列構(gòu)造二叉樹★★
6.4.3LeetCode2196——根據(jù)描述創(chuàng)建二叉樹★★
6.5二叉樹序列化的算法設(shè)計(jì)
6.5.1LeetCode297——二叉樹的序列化與反序列化★★★
6.5.2LeetCode100——相同的樹★
6.5.3LeetCode572——另一棵樹的子樹★
推薦練習(xí)題
第7章二叉搜索樹
7.1二叉搜索樹概述
7.1.1二叉搜索樹的定義
7.1.2二叉搜索樹的知識(shí)點(diǎn)
7.2二叉搜索樹基本操作的算法設(shè)計(jì)
7.2.1LeetCode1008——先序遍歷構(gòu)造二叉搜索樹★★
7.2.2LeetCode700——二叉搜索樹中的搜索★
7.2.3LeetCode701——二叉搜索樹中的插入操作★★
7.2.4LeetCode450——刪除二叉搜索樹中的結(jié)點(diǎn)★★
7.3二叉搜索樹特性的算法設(shè)計(jì)
7.3.1LeetCode270——最接近的二叉搜索樹值★
7.3.2LeetCode235——二叉搜索樹的最近公共祖先★★
7.3.3LeetCode938——二叉搜索樹的范圍和★
7.3.4LeetCode669——修剪二叉搜索樹★★
7.3.5LeetCode776——拆分二叉搜索樹★★
7.3.6LeetCode285——二叉搜索樹中的中序后繼★★
7.3.7LeetCode255——驗(yàn)證先序遍歷序列二叉搜索樹★★
7.4二叉搜索樹基于中序遍歷的算法設(shè)計(jì)
7.4.1LeetCode783——二叉搜索樹結(jié)點(diǎn)的最小距離★
7.4.2LeetCode230——二叉搜索樹中第k小的元素★★
7.4.3LeetCode98——驗(yàn)證二叉搜索樹★★
7.4.4LeetCode538——把二叉搜索樹轉(zhuǎn)換為累加樹★★
7.4.5LeetCode99——恢復(fù)二叉搜索樹★★
7.4.6LeetCode173——二叉搜索樹迭代器★★
7.4.7LeetCode272——最接近的二叉搜索樹值Ⅱ★★★
推薦練習(xí)題
第8章平衡二叉樹
8.1平衡二叉樹概述
8.1.1平衡二叉樹的定義
8.1.2平衡二叉樹的知識(shí)點(diǎn)
8.2構(gòu)造平衡二叉樹的算法設(shè)計(jì)
8.2.1LeetCode108——將有序數(shù)組轉(zhuǎn)換為平衡二叉樹★
8.2.2LeetCode109——將有序鏈表轉(zhuǎn)換為平衡二叉樹★★
8.2.3LeetCode1382——將二叉搜索樹轉(zhuǎn)換為平衡二叉樹★★
8.3平衡樹集合應(yīng)用的算法設(shè)計(jì)
8.3.1LeetCode506——相對(duì)名次★
8.3.2LeetCode414——第三大的數(shù)★
8.3.3LeetCode855——考場(chǎng)就座★★
8.3.4LeetCode2353——設(shè)計(jì)食物評(píng)分系統(tǒng)★★
8.4平衡樹映射應(yīng)用的算法設(shè)計(jì)
8.4.1LeetCode846——一手順子★★
8.4.2LeetCode981——基于時(shí)間的鍵值存儲(chǔ)★★
8.4.3LeetCode1912——設(shè)計(jì)電影租借系統(tǒng)★★★
推薦練習(xí)題
第9章優(yōu)先隊(duì)列
9.1優(yōu)先隊(duì)列概述
9.1.1優(yōu)先隊(duì)列的定義
9.1.2優(yōu)先隊(duì)列的知識(shí)點(diǎn)
9.2優(yōu)先隊(duì)列的實(shí)現(xiàn)
9.2.1LeetCode912——排序數(shù)組★★
9.2.2LeetCode215——數(shù)組中第k個(gè)最大的元素★★
9.2.3LeetCode506——相對(duì)名次★
9.3優(yōu)先隊(duì)列應(yīng)用的算法設(shè)計(jì)
9.3.1LeetCode703——數(shù)據(jù)流中第k大的元素★
9.3.2LeetCode373——查找和最小的k對(duì)數(shù)字★★
9.3.3LeetCode23——合并k個(gè)有序鏈表★★★
9.3.4LeetCode239——滑動(dòng)窗口的最大值★★★
9.3.5LeetCode1383——最大的團(tuán)隊(duì)表現(xiàn)值★★★
9.3.6LeetCode2462——雇傭k位工人的總代價(jià)★★
推薦練習(xí)題
第10章并查集
10.1并查集概述
10.1.1并查集的定義
10.1.2并查集的實(shí)現(xiàn)
10.1.3帶權(quán)并查集
10.2一維并查集應(yīng)用的算法設(shè)計(jì)
10.2.1LeetCode261——以圖判樹★★
10.2.2LeetCode323——無向圖中連通分量的數(shù)目★★
10.2.3LeetCode684——冗余連接★★
10.2.4LeetCode785——判斷二分圖★★
10.2.5LeetCode990——等式方程的可滿足性★★
10.2.6LeetCode1061——按字典序排列最小的等價(jià)字符串★★
10.2.7LeetCode947——移除最多的同行或同列石頭★★
10.3二維并查集
10.3.1LeetCode200——島嶼的數(shù)量★★
10.3.2LeetCode1559——在二維網(wǎng)格圖中探測(cè)環(huán)★★
10.4帶權(quán)并查集
10.4.1LeetCode695——最大島嶼的面積★★
10.4.2LeetCode128——最長連續(xù)序列★★
10.4.3LeetCode1254——統(tǒng)計(jì)封閉島嶼的數(shù)目★★
10.4.4LeetCode399——除法求值★★
推薦練習(xí)題
第11章前綴和與差分
11.1前綴和與差分概述
11.1.1前綴和
11.1.2差分
11.2一維前綴和應(yīng)用的算法設(shè)計(jì)
11.2.1LeetCode724——尋找數(shù)組的中心下標(biāo)★
11.2.2LeetCode238——除自身以外數(shù)組的乘積★★
11.2.3LeetCode1749——任意子數(shù)組和的絕對(duì)值的最大值★★
11.2.4LeetCode1524——和為奇數(shù)的子數(shù)組的數(shù)目★★
11.2.5LeetCode560——和為k的子數(shù)組★★
11.2.6LeetCode325——和等于k的最長子數(shù)組的長度★★
11.2.7LeetCode523——連續(xù)子數(shù)組和★★
11.2.8LeetCode53——最大子數(shù)組和★★
11.3二維前綴和應(yīng)用的算法設(shè)計(jì)
11.3.1LeetCode304——二維區(qū)域和檢索(矩陣不可變)★★
11.3.2LeetCode1074——元素和為目標(biāo)值的子矩陣的數(shù)量★★★
11.3.3面試題17.24——最大子矩陣★★★
11.4差分?jǐn)?shù)組應(yīng)用的算法設(shè)計(jì)
11.4.1LeetCode370——區(qū)間加法★★
11.4.2LeetCode1109——航班預(yù)訂統(tǒng)計(jì)★★
11.4.3LeetCode2536——子矩陣元素加1★★
推薦練習(xí)題
第12章線段樹
12.1線段樹概述
12.1.1線段樹的定義
12.1.2簡(jiǎn)單線段樹的實(shí)現(xiàn)
12.1.3復(fù)雜線段樹的實(shí)現(xiàn)
12.1.4線段樹的動(dòng)態(tài)開點(diǎn)實(shí)現(xiàn)
12.1.5離散化
12.2簡(jiǎn)單線段樹應(yīng)用的算法設(shè)計(jì)
12.2.1LeetCode303——區(qū)域和檢索(數(shù)組不可變)★
12.2.2LeetCode308——二維區(qū)域和檢索(可改)★★★
12.2.3LeetCode327——區(qū)間和的個(gè)數(shù)★★★
12.3復(fù)雜線段樹應(yīng)用的算法設(shè)計(jì)
12.3.1LeetCode715——Range模塊★★★
12.3.2LeetCode1622——奇妙序列★★★
12.4離散化在線段樹中的應(yīng)用
12.4.1LeetCode327——區(qū)間和的個(gè)數(shù)★★★
12.4.2LeetCode315——計(jì)算右側(cè)小于當(dāng)前元素的個(gè)數(shù)★★★
推薦練習(xí)題
第13章樹狀數(shù)組
13.1樹狀數(shù)組概述
13.1.1樹狀數(shù)組的定義
13.1.2樹狀數(shù)組的實(shí)現(xiàn)
13.2樹狀數(shù)組應(yīng)用的算法設(shè)計(jì)
13.2.1LeetCode1649——通過指令創(chuàng)建有序數(shù)組★★★
13.2.2LeetCode1409——查詢帶鍵的排列★★
13.2.3LeetCode683——k個(gè)關(guān)閉的燈泡★★★
13.2.4LeetCode308——二維區(qū)域和檢索(可改)★★★
13.3離散化在樹狀數(shù)組中的應(yīng)用
13.3.1LeetCode327——區(qū)間和的個(gè)數(shù)★★★
13.3.2LeetCode315——計(jì)算右側(cè)小于當(dāng)前元素的個(gè)數(shù)★★★
推薦練習(xí)題
第14章字典樹和后綴數(shù)組
14.1字典樹和后綴數(shù)組概述
14.1.1字典樹
14.1.2后綴數(shù)組
14.2字典樹應(yīng)用的算法設(shè)計(jì)
14.2.1LeetCode208——實(shí)現(xiàn)Trie(前綴樹)★★
14.2.2LeetCode14——最長公共前綴★
14.2.3LeetCode648——單詞替換★★
14.2.4LeetCode677——鍵值映射★★
14.2.5LeetCode792——匹配子序列的單詞數(shù)★★
14.3后綴數(shù)組應(yīng)用的算法設(shè)計(jì)
14.3.1LeetCode1698——字符串的不同子串的個(gè)數(shù)★★
14.3.2LeetCode1044——最長重復(fù)子串★★★
推薦練習(xí)題
 
 

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)