程序員代碼面試指南:IT名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解(第2版)
定 價(jià):109 元
- 作者:左程云
- 出版時(shí)間:2019/1/1
- ISBN:9787121354861
- 出 版 社:電子工業(yè)出版社
- 中圖法分類:TP311.1
- 頁碼:576
- 紙張:
- 版次:01
- 開本:16開
《程序員代碼面試指南:IT名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解(第2版)》是一本程序員代碼面試"神書”!書中對(duì)IT名企代碼面試各類題目的最優(yōu)解進(jìn)行了總結(jié),并提供了相關(guān)代碼實(shí)現(xiàn)。針對(duì)當(dāng)前程序員面試缺乏權(quán)威題目匯總這一痛點(diǎn),本書選取將近300道真實(shí)出現(xiàn)過的經(jīng)典代碼面試題,幫助廣大程序員的面試準(zhǔn)備做到接近萬無一失。"刷”完本書后,你就是"題王”!《程序員代碼面試指南:IT名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解(第2版)》采用題目解答的方式組織內(nèi)容,并把面試題類型相近或者解法相近的題目盡量放在一起,讀者在學(xué)習(xí)本書時(shí)很容易看出面試題解法之間的聯(lián)系,使知識(shí)的學(xué)習(xí)避免碎片化。書中將所有的面試題從難到易依次分為"將”“!薄拔尽薄笆俊彼膫(gè)檔次,方便讀者有針對(duì)性地選擇"刷”題。本書所收錄的所有面試題都給出了最優(yōu)解講解和代碼實(shí)現(xiàn),并且提供了一些普通解法和最優(yōu)解法的運(yùn)行時(shí)間對(duì)比,讓讀者真切地感受到最優(yōu)解的魅力!《程序員代碼面試指南:IT名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解(第2版)》中的題目全面且經(jīng)典,更重要的是,書中收錄了大量新題和最優(yōu)解分析,這些內(nèi)容源自筆者多年來"死磕自己”的深入思考。程序員們做好準(zhǔn)備在IT名企的面試中脫穎而出、一舉成名了嗎?這本書就是你應(yīng)該擁有的"神兵利器”。當(dāng)然,對(duì)需要提升算法和數(shù)據(jù)結(jié)構(gòu)等方面能力的程序員而言,《程序員代碼面試指南:IT名企算法與數(shù)據(jù)結(jié)構(gòu)題目最優(yōu)解(第2版)》的價(jià)值也是顯而易見的。
左程云,本科和碩士先后就讀于華中科技大學(xué)和芝加哥大學(xué),在多家國內(nèi)外頂級(jí)互聯(lián)網(wǎng)公司工作多年。自2010年起專注刷題至今,從2015年開始利用業(yè)余時(shí)間在?途W(wǎng)平臺(tái)針對(duì)代碼面試與算法開始教學(xué)工作。
第1章 棧和隊(duì)列 1
設(shè)計(jì)一個(gè)有g(shù)etMin功能的棧(士 ★☆☆☆) 1
由兩個(gè)棧組成的隊(duì)列(尉 ★★☆☆) 5
如何僅用遞歸函數(shù)和棧操作逆序一個(gè)棧(尉 ★★☆☆) 7
貓狗隊(duì)列(難度:士 ★☆☆☆) 9
用一個(gè)棧實(shí)現(xiàn)另一個(gè)棧的排序(士 ★☆☆☆) 12
用棧來求解漢諾塔問題(校 ★★★☆) 13
生成窗口最大值數(shù)組(尉 ★★☆☆) 18
單調(diào)棧結(jié)構(gòu)(尉 ★★☆☆) 20
求最大子矩陣的大。ㄐ ★★★☆) 26
最大值減去最小值小于或等于num的子數(shù)組數(shù)量(校 ★★★☆) 31
可見的山峰對(duì)數(shù)量(原問題 士 ★☆☆☆ 進(jìn)階問題 將 ★★★★) 33
第2章 鏈表問題 41
打印兩個(gè)有序鏈表的公共部分(士 ★☆☆☆) 41
在單鏈表和雙鏈表中刪除倒數(shù)第K個(gè)節(jié)點(diǎn)(士 ★☆☆☆) 42
刪除鏈表的中間節(jié)點(diǎn)和a/b處的節(jié)點(diǎn)(士 ★☆☆☆) 45
反轉(zhuǎn)單向和雙向鏈表(士 ★☆☆☆) 47
反轉(zhuǎn)部分單向鏈表(士 ★☆☆☆) 48
環(huán)形單鏈表的約瑟夫問題(原問題 士 ★☆☆☆ 進(jìn)階 校 ★★★☆) 50
判斷一個(gè)鏈表是否為回文結(jié)構(gòu)(普通解法 士 ★☆☆☆ 進(jìn)階解法 尉 ★★☆☆) 55
將單向鏈表按某值劃分成左邊小、中間相等、右邊大的形式(尉 ★★☆☆) 59
復(fù)制含有隨機(jī)指針節(jié)點(diǎn)的鏈表(尉 ★★☆☆) 63
兩個(gè)單鏈表生成相加鏈表(士 ★☆☆☆) 66
兩個(gè)單鏈表相交的一系列問題(將 ★★★★) 69
將單鏈表的每K個(gè)節(jié)點(diǎn)之間逆序(尉 ★★☆☆) 74
刪除無序單鏈表中值重復(fù)出現(xiàn)的節(jié)點(diǎn)(士 ★☆☆☆) 77
在單鏈表中刪除指定值的節(jié)點(diǎn)(士 ★☆☆☆) 79
將搜索二叉樹轉(zhuǎn)換成雙向鏈表(尉 ★★☆☆) 81
單鏈表的選擇排序(士 ★☆☆☆) 84
一種怪異的節(jié)點(diǎn)刪除方式(士 ★☆☆☆) 86
向有序的環(huán)形單鏈表中插入新節(jié)點(diǎn)(士 ★☆☆☆) 87
合并兩個(gè)有序的單鏈表(士 ★☆☆☆) 88
按照左右半?yún)^(qū)的方式重新組合單鏈表(士 ★☆☆☆) 90
第3章 二叉樹問題 93
分別用遞歸和非遞歸方式實(shí)現(xiàn)二叉樹先序、中序和后序遍歷(校 ★★★☆) 93
打印二叉樹的邊界節(jié)點(diǎn)(尉 ★★☆☆) 100
如何較為直觀地打印二叉樹(尉 ★★☆☆) 104
二叉樹的序列化和反序列化(士 ★☆☆☆) 107
遍歷二叉樹的神級(jí)方法(將 ★★★★) 111
在二叉樹中找到累加和為指定值的最長路徑長度(尉 ★★☆☆) 119
找到二叉樹中的最大搜索二叉子樹(尉 ★★☆☆) 121
找到二叉樹中符合搜索二叉樹條件的最大拓?fù)浣Y(jié)構(gòu)(校 ★★★☆) 124
二叉樹的按層打印與ZigZag打印(尉 ★★☆☆) 132
調(diào)整搜索二叉樹中兩個(gè)錯(cuò)誤的節(jié)點(diǎn)(原問題 尉 ★★☆☆ 進(jìn)階問題 將 ★★★★) 137
判斷t1樹是否包含t2樹全部的拓?fù)浣Y(jié)構(gòu)(士 ★☆☆☆) 142
判斷t1樹中是否有與t2樹拓?fù)浣Y(jié)構(gòu)完全相同的子樹(校 ★★★☆) 144
判斷二叉樹是否為平衡二叉樹(士 ★☆☆☆) 146
根據(jù)后序數(shù)組重建搜索二叉樹(士 ★☆☆☆) 148
判斷一棵二叉樹是否為搜索二叉樹和完全二叉樹(士 ★☆☆☆) 150
通過有序數(shù)組生成平衡搜索二叉樹(士 ★☆☆☆) 152
在二叉樹中找到一個(gè)節(jié)點(diǎn)的后繼節(jié)點(diǎn)(尉 ★★☆☆) 153
在二叉樹中找到兩個(gè)節(jié)點(diǎn)的最近公共祖先(原問題 士 ★☆☆☆ 進(jìn)階問題 尉 ★★☆☆ 再進(jìn)階問題:校 ★★★☆) 155
Tarjan算法與并查集解決二叉樹節(jié)點(diǎn)間最近公共祖先的批量查詢問題(校 ★★★☆) 160
二叉樹節(jié)點(diǎn)間的最大距離問題(尉 ★★☆☆) 168
派對(duì)的最大快樂值(尉 ★★☆☆) 169
通過先序和中序數(shù)組生成后序數(shù)組(士 ★☆☆☆) 172
統(tǒng)計(jì)和生成所有不同的二叉樹(尉 ★★☆☆) 173
統(tǒng)計(jì)完全二叉樹的節(jié)點(diǎn)數(shù)(尉 ★★☆☆) 176
第4章 遞歸和動(dòng)態(tài)規(guī)劃 179
斐波那契系列問題的遞歸和動(dòng)態(tài)規(guī)劃(將 ★★★★) 179
矩陣的最小路徑和(尉 ★★☆☆) 185
換錢的最少貨幣數(shù)(尉 ★★☆☆) 189
機(jī)器人達(dá)到指定位置方法數(shù)(尉 ★★☆☆) 192
換錢的方法數(shù)(尉 ★★☆☆) 199
打氣球的最大分?jǐn)?shù)(校 ★★★☆) 204
最長遞增子序列(校 ★★★☆) 210
信封嵌套問題(校 ★★★☆) 214
漢諾塔問題(校 ★★★☆) 217
最長公共子序列問題(尉 ★★☆☆) 220
最長公共子串問題(校 ★★★☆) 223
子數(shù)組異或和為0的最多劃分(校 ★★★☆) 227
最小編輯代價(jià)(校 ★★★☆) 230
字符串的交錯(cuò)組成(校 ★★★☆) 233
龍與地下城游戲問題(尉 ★★☆☆) 236
數(shù)字字符串轉(zhuǎn)換為字母組合的種數(shù)(尉 ★★☆☆) 238
表達(dá)式得到期望結(jié)果的組成種數(shù)(校 ★★★☆) 240
排成一條線的紙牌博弈問題(尉 ★★☆☆) 245
跳躍游戲(士 ★☆☆☆) 247
數(shù)組中的最長連續(xù)序列(尉 ★★☆☆) 248
N皇后問題(校 ★★★☆) 249
第5章 字符串問題 253
判斷兩個(gè)字符串是否互為變形詞(士 ★☆☆☆) 253
判斷兩個(gè)字符串是否互為旋轉(zhuǎn)詞(士 ★☆☆☆) 254
將整數(shù)字符串轉(zhuǎn)成整數(shù)值(尉 ★★☆☆) 255
字符串的統(tǒng)計(jì)字符串(士 ★☆☆☆) 258
判斷字符數(shù)組中是否所有的字符都只出現(xiàn)過一次
(按要求1實(shí)現(xiàn)的方法 士 ★☆☆☆ 按要求2實(shí)現(xiàn)的方法 尉 ★★☆☆) 261
在有序但含有空的數(shù)組中查找字符串(尉 ★★☆☆) 263
字符串的調(diào)整與替換(士 ★☆☆☆) 265
翻轉(zhuǎn)字符串(士 ★☆☆☆) 267
完美洗牌問題(將 ★★★★) 270
刪除多余字符得到字典序最小的字符串(尉 ★★☆☆) 276
數(shù)組中兩個(gè)字符串的最小距離(尉 ★★☆☆) 279
字符串的轉(zhuǎn)換路徑問題(尉 ★★☆☆) 281
添加最少字符使字符串整體都是回文字符串(校 ★★★☆) 285
括號(hào)字符串的有效性和最長有效長度
(原問題 士 ★☆☆☆ 補(bǔ)充問題 尉 ★★☆☆) 290
公式字符串求值(校 ★★★☆) 292
0左邊必有1的二進(jìn)制字符串?dāng)?shù)量(校 ★★★☆) 294
拼接所有字符串產(chǎn)生字典順序最小的大寫字符串(校 ★★★☆) 297
找到字符串的最長無重復(fù)字符子串(尉 ★★☆☆) 300
找到被指的新類型字符(士 ★☆☆☆) 302
旋變字符串問題(將 ★★★★) 303
最小包含子串的長度(校 ★★★☆) 310
回文最少分割數(shù)(尉 ★★★☆) 314
字符串匹配問題(校 ★★★☆) 316
字典樹(前綴樹)的實(shí)現(xiàn)(尉 ★★★☆) 320
子數(shù)組的最大異或和(校 ★★★☆) 324
第6章 大數(shù)據(jù)和空間限制 330
認(rèn)識(shí)布隆過濾器(尉 ★★☆☆) 330
只用2GB內(nèi)存在20億個(gè)整數(shù)中找到出現(xiàn)次數(shù)最多的數(shù)(士 ★☆☆☆) 335
40億個(gè)非負(fù)整數(shù)中找到?jīng)]出現(xiàn)的數(shù)(尉 ★★☆☆) 336
找到100億個(gè)URL中重復(fù)的URL以及搜索詞匯的top K問題(士 ★☆☆☆) 337
40億個(gè)非負(fù)整數(shù)中找到出現(xiàn)兩次的數(shù)和所有數(shù)的中位數(shù)(尉 ★★☆☆) 338
一致性哈希算法的基本原理(尉 ★★☆☆) 339
島問題(原問題 尉 ★★☆☆ 進(jìn)階問題 將 ★★★★) 342
第7章 位運(yùn)算 348
不用額外變量交換兩個(gè)整數(shù)的值(士 ★☆☆☆) 348
不用做任何比較判斷找出兩個(gè)數(shù)中較大的數(shù)(校 ★★★☆) 349
只用位運(yùn)算不用算術(shù)運(yùn)算實(shí)現(xiàn)整數(shù)的加減乘除運(yùn)算(尉 ★★☆☆) 350
整數(shù)的二進(jìn)制表達(dá)中有多少個(gè)1(尉 ★★☆☆) 355
在其他數(shù)都出現(xiàn)偶數(shù)次的數(shù)組中找到出現(xiàn)奇數(shù)次的數(shù)(尉 ★★☆☆) 357
在其他數(shù)都出現(xiàn)k次的數(shù)組中找到只出現(xiàn)一次的數(shù)(尉 ★★☆☆) 359
第8章 數(shù)組和矩陣問題 361
轉(zhuǎn)圈打印矩陣(士 ★☆☆☆) 361
將正方形矩陣順時(shí)針轉(zhuǎn)動(dòng)90°(士 ★☆☆☆) 363
“之”字形打印矩陣(士 ★☆☆☆) 364
找到無序數(shù)組中最小的k個(gè)數(shù)
(O(Nlogk)的方法 尉 ★★☆☆ O(N)的方法 將 ★★★★) 366
需要排序的最短子數(shù)組長度(士 ★☆☆☆) 371
在數(shù)組中找到出現(xiàn)次數(shù)大于N/K的數(shù)(校 ★★★☆) 372
在行列都排好序的矩陣中找數(shù)(士 ★☆☆☆) 376
最長的可整合子數(shù)組的長度(尉 ★★☆☆) 378
不重復(fù)打印排序數(shù)組中相加和為給定值的所有二元組和三元組
(尉 ★★☆☆) 380
未排序正數(shù)數(shù)組中累加和為給定值的最長子數(shù)組長度(尉 ★★☆☆) 382
未排序數(shù)組中累加和為給定值的最長子數(shù)組系列問題(尉 ★★☆☆) 384
未排序數(shù)組中累加和小于或等于給定值的最長子數(shù)組長度(將 ★★★★) 386
計(jì)算數(shù)組的小和(校 ★★★☆) 392
自然數(shù)數(shù)組的排序(士 ★☆☆☆) 394
奇數(shù)下標(biāo)都是奇數(shù)或者偶數(shù)下標(biāo)都是偶數(shù)(士 ★☆☆☆) 396
子數(shù)組的最大累加和問題(士 ★☆☆☆) 397
子矩陣的最大累加和問題(尉 ★★☆☆) 398
在數(shù)組中找到一個(gè)局部最小的位置(尉 ★★☆☆) 401
數(shù)組中子數(shù)組的最大累乘積(尉 ★★☆☆) 402
打印N個(gè)數(shù)組整體最大的Top K(尉 ★★☆☆) 404
邊界都是1的最大正方形大。ㄎ ★★☆☆) 406
不包含本位置值的累乘數(shù)組(士 ★☆☆☆) 409
數(shù)組的partition調(diào)整(士 ★☆☆☆) 411
求最短通路值(尉 ★★☆☆) 413
數(shù)組中未出現(xiàn)的最小正整數(shù)(尉 ★★☆☆) 415
數(shù)組排序之后相鄰數(shù)的最大差值(尉 ★★☆☆) 416
做項(xiàng)目的最大收益問題(尉 ★★☆☆) 418
分金條的最小花費(fèi)(尉 ★★☆☆) 421
大樓輪廓問題(將 ★★★★) 423
加油站良好出發(fā)點(diǎn)問題(校 ★★★☆) 432
容器盛水問題(校 ★★★☆) 439
第9章 其他題目 444
從5隨機(jī)到7隨機(jī)及其擴(kuò)展
(原問題 尉 ★★☆☆ 補(bǔ)充問題 尉 ★★☆☆ 進(jìn)階問題 校 ★★★☆) 444
一行代碼求兩個(gè)數(shù)的最大公約數(shù)(士 ★★☆☆) 448
有關(guān)階乘的兩個(gè)問題(原問題 尉 ★★☆☆ 進(jìn)階問題 校 ★★★☆) 448
判斷一個(gè)點(diǎn)是否在矩形內(nèi)部(尉 ★★☆☆) 451
判斷一個(gè)點(diǎn)是否在三角形內(nèi)部(尉 ★★☆☆) 452
折紙問題(尉 ★★☆☆) 456
能否完美地拼成矩形(尉 ★★☆☆) 457
蓄水池算法(尉 ★★☆☆) 460
設(shè)計(jì)有setAll功能的哈希表(士 ★☆☆☆) 461
最大的leftMax與rightMax之差的絕對(duì)值(校 ★★★☆) 463
設(shè)計(jì)LRU緩存結(jié)構(gòu)(尉 ★★☆☆) 465
LFU緩存結(jié)構(gòu)設(shè)計(jì)(校 ★★★☆) 469
設(shè)計(jì)RandomPool結(jié)構(gòu)(尉 ★★☆☆) 474
并查集的實(shí)現(xiàn)(尉 ★★☆☆) 476
調(diào)整[0,x)區(qū)間上的數(shù)出現(xiàn)的概率(士 ★☆☆☆) 480
路徑數(shù)組變?yōu)榻y(tǒng)計(jì)數(shù)組(校 ★★★☆) 481
正數(shù)數(shù)組的最小不可組成和(尉 ★★☆☆) 486
累加出整個(gè)范圍所有的數(shù)最少還需幾個(gè)數(shù)(尉 ★★☆☆) 489
一種字符串和數(shù)字的對(duì)應(yīng)關(guān)系(校 ★★★☆) 491
1到n中1出現(xiàn)的次數(shù)(校 ★★★☆) 494
從N個(gè)數(shù)中等概率打印M個(gè)數(shù)(士 ★☆☆☆) 497
判斷一個(gè)數(shù)是否是回文數(shù)(士 ★☆☆☆) 498
在有序旋轉(zhuǎn)數(shù)組中找到最小值(尉 ★★☆☆) 499
在有序旋轉(zhuǎn)數(shù)組中找到一個(gè)數(shù)(尉 ★★☆☆) 501
數(shù)字的英文表達(dá)和中文表達(dá)(校 ★★★☆) 503
分糖果問題(校 ★★★☆) 509
一種消息接收并打印的結(jié)構(gòu)設(shè)計(jì)(尉 ★★☆☆) 512
隨時(shí)找到數(shù)據(jù)流的中位數(shù)(尉 ★★☆☆) 516
在兩個(gè)長度相等的排序數(shù)組中找到上中位數(shù)(尉 ★★☆☆) 518
在兩個(gè)排序數(shù)組中找到第K小的數(shù)(將 ★★★★) 521
兩個(gè)有序數(shù)組間相加和的TOP K問題(尉 ★★☆☆) 523
出現(xiàn)次數(shù)的TOP K問題(原問題 尉 ★★☆☆ 進(jìn)階問題 校 ★★★☆) 526
Manacher算法(將 ★★★★) 535
KMP算法(將 ★★★★) 542
丟棋子問題(校 ★★★☆) 548
畫匠問題(校 ★★★☆) 555
郵局選址問題(校 ★★★☆) 559