1. 程式人生 > >《程式設計師程式碼面試指南 IT名企演算法與資料結構題目最優解》左程雲著 pdf

《程式設計師程式碼面試指南 IT名企演算法與資料結構題目最優解》左程雲著 pdf

第1章棧和佇列 1
設計一個有getMin功能的棧(士★☆☆☆) 1
由兩個棧組成的佇列(尉★★☆☆) 5
如何僅用遞迴函式和棧操作逆序一個棧(尉★★☆☆) 8
貓狗佇列(士★☆☆☆)10
用一個棧實現另一個棧的排序(士★☆☆☆) 13
用棧來求解漢諾塔問題(校★★★☆) 14
生成視窗最大值陣列(尉★★☆☆) 19
構造陣列的MaxTree(校★★★☆) 22
求最大子矩陣的大小(校★★★☆) 26
最大值減去最小值小於或等於num的子陣列數量(校★★★☆) 31
第2章連結串列問題34
列印兩個有序連結串列的公共部分(士★☆☆☆) 34
在單鏈表和雙鏈表中刪除倒數第K 個節點(士★☆☆☆) 35
刪除連結串列的中間節點和a/b 處的節點(士★☆☆☆) 38
反轉單向和雙向連結串列(士★☆☆☆) 40
反轉部分單向連結串列(士★☆☆☆) 42
環形單鏈表的約瑟夫問題(原問題:士★☆☆☆進階:校★★★☆)43
判斷一個連結串列是否為迴文結構(普通解法士★☆☆☆)(進階解法尉★★☆☆) 48
將單向連結串列按某值劃分成左邊小、中間相等、右邊大的形式(尉★★☆☆) 52
複製含有隨機指標節點的連結串列(尉★★☆☆) 56
兩個單鏈表生成相加連結串列(士★☆☆☆) 59
兩個單鏈表相交的一系列問題(將★★★★) 62
將單鏈表的每K個節點之間逆序(尉★★☆☆) 68
刪除無序單鏈表中值重複出現的節點(士★☆☆☆) 71
在單鏈表中刪除指定值的節點(士★☆☆☆) 73
將搜尋二叉樹轉換成雙向連結串列(尉★★☆☆) 74
單鏈表的選擇排序(士★☆☆☆) 79
一種怪異的節點刪除方式(士★☆☆☆) 81
向有序的環形單鏈表中插入新節點(士★☆☆☆) 82
合併兩個有序的單鏈表(士★☆☆☆) 84
按照左右半區的方式重新組合單鏈表(士★☆☆☆) 86
第3章二叉樹問題 88
分別用遞迴和非遞迴方式實現二叉樹先序、中序和後序遍歷(校★★★☆) 88
列印二叉樹的邊界節點(尉★★☆☆) 95
如何較為直觀地列印二叉樹(尉★★☆☆) 100
二叉樹的序列化和反序列化(士★☆☆☆) 103
遍歷二叉樹的神級方法(將★★★★) 107
在二叉樹中找到累加和為指定值的最長路徑長度(尉★★☆☆) 115
找到二叉樹中的最大搜索二叉子樹(尉★★☆☆) 117
找到二叉樹中符合搜尋二叉樹條件的最大拓撲結構(校★★★☆)119
二叉樹的按層列印與ZigZag列印(尉★★☆☆) 129
調整搜尋二叉樹中兩個錯誤的節點(原問題:尉★★☆☆)(進階問題:將★★★★) 134
判斷t1樹是否包含t2 樹全部的拓撲結構(士★☆☆☆) 140
判斷t1樹中是否有與t2 樹拓撲結構完全相同的子樹(校★★★☆)141
判斷二叉樹是否為平衡二叉樹(士★☆☆☆) 144
根據後序陣列重建搜尋二叉樹(士★☆☆☆) 145
判斷一棵二叉樹是否為搜尋二叉樹和完全二叉樹(士★☆☆☆) 147
通過有序陣列生成平衡搜尋二叉樹(士★☆☆☆) 150
在二叉樹中找到一個節點的後繼節點(尉★★☆☆) 151
在二叉樹中找到兩個節點的最近公共祖先(原問題:士★☆☆☆)(進階問題:尉★★☆☆再進階問題:校★★★☆)153
Tarjan演算法與並查集解決二叉樹節點間最近公共祖先的批量查詢問題(校★★★☆) 159
二叉樹節點間的最大距離問題(尉★★☆☆) 169
先序、中序和後序陣列兩兩結合重構二叉樹(先序與中序結合士★☆☆☆)(中序與後序結合士★☆☆☆先序與後序結合尉★★☆☆)171
通過先序和中序陣列生成後序陣列(士★☆☆☆) 174
統計和生成所有不同的二叉樹(尉★★☆☆) 175
統計完全二叉樹的節點數(尉★★☆☆) 178
第4章遞迴和動態規劃181
斐波那契系列問題的遞迴和動態規劃(將★★★★) 181
矩陣的最小路徑和(尉★★☆☆) 187
換錢的最少貨幣數(尉★★☆☆) 191
換錢的方法數(尉★★☆☆) 196
最長遞增子序列(校★★★☆) 202
漢諾塔問題(校★★★☆) 206
最長公共子序列問題(尉★★☆☆) 210
最長公共子串問題(校★★★☆) 213
最小編輯代價(校★★★☆) 217
字串的交錯組成(校★★★☆) 220
龍與地下城遊戲問題(尉★★☆☆) 223
數字字串轉換為字母組合的種數(尉★★☆☆) 225
表示式得到期望結果的組成種數(校★★★☆) 228
排成一條線的紙牌博弈問題(尉★★☆☆) 233
跳躍遊戲(士★☆☆☆)235
陣列中的最長連續序列(尉★★☆☆) 236
N皇后問題(校★★★☆) 238
第5章字串問題 242
判斷兩個字串是否互為變形詞(士★☆☆☆) 242
字串中數字子串的求和(士★☆☆☆) 243
去掉字串中連續出現k 個0 的子串(士★☆☆☆) 245
判斷兩個字串是否互為旋轉詞(士★☆☆☆) 247
將整數字符串轉成整數值(尉★★☆☆) 248
替換字串中連續出現的指定字串(士★☆☆☆) 251
字串的統計字串(士★☆☆☆) 253
判斷字元陣列中是否所有的字元都只出現過一次(按要求1 實現的方法士★☆☆☆)(按要求2 實現的方法尉★★☆☆) 255
在有序但含有空的陣列中查詢字串(尉★★☆☆) 258
字串的調整與替換(士★☆☆☆) 260
翻轉字串(士★☆☆☆) 262
陣列中兩個字串的最小距離(尉★★☆☆) 266
新增最少字元使字串整體都是迴文字串(校★★★☆) 269
括號字串的有效性和最長有效長度(原問題士★☆☆☆)(補充問題尉★★☆☆) 273
公式字串求值(校★★★☆) 276
0 左邊必有1 的二進位制字串數量(校★★★☆) 278
拼接所有字串產生字典順序最小的大寫字串(校★★★☆)281
找到字串的最長無重複字元子串(尉★★☆☆) 284
找到被指的新型別字元(士★☆☆☆) 286
最小包含子串的長度(校★★★☆) 288
迴文最少分割數(尉★★★☆) 292
字串匹配問題(校★★★☆) 294
字典樹(字首樹)的實現(尉★★☆☆) 299
第6章大資料和空間限制 303
認識布隆過濾器(尉★★☆☆) 303
只用2GB 記憶體在20 億個整數中找到出現次數最多的數(士★☆☆☆) . 308
40 億個非負整數中找到沒出現的數(尉★★☆☆) 309
找到100 億個URL 中重複的URL 以及搜尋詞彙的top K 問題(士★☆☆☆) 311
40 億個非負整數中找到出現兩次的數和所有數的中位數(尉★★☆☆) 312
一致性雜湊演算法的基本原理(尉★★☆☆) 313
第7章位運算 317
不用額外變數交換兩個整數的值(士★☆☆☆) 317
不用任何比較判斷找出兩個數中較大的數(校★★★☆) 318
只用位運算不用算術運算實現整數的加減乘除運算(尉★★☆☆) 319
整數的二進位制表達中有多少個1(尉★★☆☆) 325
在其他數都出現偶數次的陣列中找到出現奇數次的數(尉★★☆☆) 327
在其他數都出現k 次的陣列中找到只出現一次的數(尉★★☆☆) 329
第8章陣列和矩陣問題331
轉圈列印矩陣(士★☆☆☆) 331
將正方形矩陣順時針轉動90°(士★☆☆☆) 333
"之"字形列印矩陣(士★☆☆☆) 335
找到無序陣列中最小的k 個數(O(Nlogk)的方法尉★★☆☆)(O(N)的方法將★★★★) 336
需要排序的最短子陣列長度(士★☆☆☆) 342
在陣列中找到出現次數大於N/K 的數(校★★★☆)343
在行列都排好序的矩陣中找數(士★☆☆☆) 347
最長的可整合子陣列的長度(尉★★☆☆) 349
不重複列印排序陣列中相加和為給定值的所有二元組和三元組(尉★★☆☆) 351
未排序正數陣列中累加和為給定值的最長子陣列長度(尉★★☆☆)354
未排序陣列中累加和為給定值的最長子陣列系列問題(尉★★☆☆)355
未排序陣列中累加和小於或等於給定值的最長子陣列長度(校★★★☆) 358
計算陣列的小和(校★★★☆) 361
自然數陣列的排序(士★☆☆☆) 364
奇數下標都是奇數或者偶數下標都是偶數(士★☆☆☆)366
子陣列的最大累加和問題(士★☆☆☆) 367
子矩陣的最大累加和問題(尉★★☆☆) 368
在陣列中找到一個區域性最小的位置(尉★★☆☆) 371
陣列中子陣列的最大累乘積(尉★★☆☆) 373
列印N 個數組整體最大的Top K(尉★★☆☆) 374
邊界都是1 的最大正方形大小(尉★★☆☆) 377
不包含本位置值的累乘陣列(士★☆☆☆) 380
陣列的partition 調整(士★☆☆☆) 382
求最短通路值(尉★★☆☆) 384
陣列中未出現的最小正整數(尉★★☆☆) 386
陣列排序之後相鄰數的最大差值(尉★★☆☆) 388
第9章其他題目390
從5 隨機到7 隨機及其擴充套件(原問題尉★★☆☆補充問題尉★★☆☆)(進階問題校★★★☆)390
一行程式碼求兩個數的最大公約數(士★★☆☆) 394
有關階乘的兩個問題(原問題尉★★☆☆進階問題校★★★☆)395
判斷一個點是否在矩形內部(尉★★☆☆) 398
判斷一個點是否在三角形內部(尉★★☆☆) 399
摺紙問題(尉★★☆☆)402
蓄水池演算法(尉★★☆☆) 404
設計有setAll功能的雜湊表(士★☆☆☆) 406
最大的leftMax與rightMax之差的絕對值(校★★★☆)408
設計可以變更的快取結構(尉★★☆☆) 410
設計RandomPool結構(尉★★☆☆) 414
調整[0,x)區間上的數出現的概率(士★☆☆☆) 416
路徑陣列變為統計陣列(校★★★☆) 417
正數陣列的最小不可組成和(尉★★☆☆) 422
一種字串和數字的對應關係(校★★★☆) 426
1 到n 中1 出現的次數(校★★★☆) 429
從N 個數中等概率列印M 個數(士★☆☆☆) 431
判斷一個數是否是迴文數(士★☆☆☆) 433
在有序旋轉陣列中找到最小值(尉★★☆☆) 434
在有序旋轉陣列中找到一個數(尉★★☆☆) 436
數字的英文表達和中文表達(校★★★☆) 439
分糖果問題(校★★★☆) 444
一種訊息接收並列印的結構設計(尉★★☆☆) 448
設計一個沒有擴容負擔的堆結構(將★★★★) 451
隨時找到資料流的中位數(將★★★★) 462
在兩個長度相等的排序陣列中找到上中位數(尉★★☆☆) 465
在兩個排序陣列中找到第K 小的數(將★★★★) 468
兩個有序陣列間相加和的TOP K 問題(尉★★☆☆)471
出現次數的TOP K 問題(原問題尉★★☆☆進階問題校★★★☆) 474
Manacher演算法(將★★★★) 483
KMP 演算法(將★★★★) 491
丟棋子問題(校★★★☆) 498
畫匠問題(校★★★☆)505
郵局選址問題(校★★★☆) 509

相關推薦

程式設計師程式碼面試指南 IT名企演算法資料結構題目 pdf

第1章棧和佇列 1 設計一個有getMin功能的棧(士★☆☆☆) 1 由兩個棧組成的佇列(尉★★☆☆) 5 如何僅用遞迴函式和棧操作逆序一個棧(尉★★☆☆) 8 貓狗佇列(士★☆☆☆)10 用一個棧實現另一個棧的排序(士★☆☆☆) 13 用棧來求解漢諾塔問題(校★★★☆) 14 生成視窗最大值陣列(尉★★☆

程式設計師程式碼面試指南IT名企演算法資料結構題目

網站 更多書籍點選進入>> CiCi島 下載 電子版僅供預覽及學習交流使用,下載後請24小時內刪除,支援正版,喜歡的請購買正版書籍 電子書下載(皮皮雲盤-點選“普通下載”) 購買正版 封頁 編輯推薦 如何在IT名企的面試中脫穎

程式設計師程式碼面試指南IT名企演算法資料結構題目-字串問題:C/C++語言實現

程式設計師程式碼面試指南-字串問題:C/C++語言實現 以下程式執行環境:VC6++ 看到左老師出的書:程式設計師程式碼面試指南:IT名企演算法與資料結構題目最優解,都是Java實現,為了刷題,但是職位是C/C++,以下是我用C/C++實現的程式碼 題目介紹略簡單,以後補上

程序員代碼面試指南 IT名企算法數據結構題目 ,pdf高清版免費下載

公共子串 鏈表相交 com 內容 全面 構造 位數 n) 字母 下載地址:網盤下載 備用地址:網盤下載 內容簡介 · · · · · ·這是一本程序員面試寶典!書中對I

演算法資料結構題目筆記-刪除無序連結串列中重複的元素

刪除無序連結串列中重複的元素 方法1:使用雜湊表,時間複雜度O(n),空間複雜度O(n) 方法2:類似選擇排序的過程,時間複雜度O(n^2),空間複雜度O(1); 方法1 過程如下: 1. 生成一個雜湊表,因為頭節點不用刪除,所以先將頭節點存入

程式設計師程式碼面試指南 —— 連結串列問題(四)

題目:將單鏈表的每K個節點之間逆序 描述:給定一個單鏈表的頭結點head,實現一個調整單鏈表的函式,使得每K個節點之間逆序,如果最後不夠K個節點一組,則不調整最後幾個節點 例如: 連結串列 1—>2—>3—>4—>5—>6—>7—>8—>nul

程式設計師程式碼面試指南 —— 連結串列問題(三)

題目:複製含有隨機指標節點的連結串列 描述:有一種連結串列節點類描述如下: public class Node { public int value; public Node next; public Node rand; public Node(int data){ this.value

程式設計師程式碼面試指南 —— 連結串列問題(二)

題目:給定一個連結串列的頭節點head,請你判斷是否為迴文結構 例如:1 —> 2 —> 1 ture 1 —> 2 —> 2 —> 1 true 1 —> 2 —> 3 flase 思路:可以使用棧這種資料結構,可以將整個單向連結串列分為前半區和後

程式設計師程式碼面試指南 —— 連結串列問題(一)

注:題目來自於《程式設計師程式碼面試指南:IT名企演算法與資料結構題目最優解》,該書是左程雲老師的著作,值得推薦,這裡僅是記錄一下該書中題目的解法和個人理解 題目一:在單鏈表和雙鏈表中刪除倒數第K個節點 描述:   分別實現兩個函式,一個可以刪除單鏈表中倒數第K個節點,另一個可以刪除雙鏈

程式設計師程式碼面試指南 —— 棧和佇列(三)

注:題目來自於《程式設計師程式碼面試指南:IT名企演算法與資料結構題目最優解》,該書是左程雲老師的著作,值得推薦,這裡僅是記錄一下該書中題目的解法和個人理解 題目一:生成視窗最大值陣列   問題描述:   有一個整型陣列arr和一個大小為w的視窗從陣列的最左邊滑到最右邊,視窗每次向右邊滑

程式設計師程式碼面試指南 —— 棧和佇列(二)

注:題目來自於《程式設計師程式碼面試指南:IT名企演算法與資料結構題目最優解》,該書是左程雲老師的著作,值得推薦,這裡僅是記錄一下該書中題目的解法和個人理解 題目:貓狗佇列   寵物、貓、狗的類如下: public class Pet { private String typ

程式設計師程式碼面試指南 —— 棧和佇列(一)

注:題目來自於《程式設計師程式碼面試指南:IT名企演算法與資料結構題目最優解》,該書是左程雲老師的著作,值得推薦,這裡僅是記錄一下該書中題目的解法和個人理解 一:設計一個有getMin功能的棧   題目:在實現棧的基本功能的基礎上,再實現返回棧中的最小元素操作   思路:可以建立一個輔助

程式設計師程式碼面試指南》 矩陣長遞增路徑問題——java實現

矩陣最長遞增路徑問題 題目描述: 給定一個整數矩陣matrix,每個位置你可以向左、右、下、上移動,找到其中最長的遞增路徑。 例如: matrix = [ [9,9,4], [6,6,8], [2,1,1] ] 返回4 最長路徑是[1, 2, 6, 9]. m

程式設計師程式碼面試指南》醜數問題——java實現

醜數問題 題目描述: 規定1是醜數,其他的數如果只含有2或3或5的因子,那麼這個 數也是醜數。 比如依次的醜數為:1,2,3,4,5,6,8,9,10,12,15… 求第n個醜數 題目難度: easy 題目思路: 思路一: 本題要求出第n個醜數,分為兩個步驟

程式設計師程式碼面試指南》求兩個字串長公共子串

/** * 題目: * 給定兩個字串 str1 和 str2,返回兩個字串的最長公共子串。 *舉例: * str1 = "1AB2345CD",str2 = "12345EF",返回"2345"。 */ /** * 解答: * 經典動態規劃的方法可以做到時間複

程式設計師程式碼面試指南》在有序但含有空的陣列中查詢字串

題目: 給定一個字串陣列strs[],在strs中有些位置為null,但在不為null的位置上,其字串是按照字典順序有小到大依次出現的。 再給定一個字串str返回str在strs中出現的最左的位置。 舉例: strs=[null,"a",null,"a",null

程式設計師程式碼面試指南》判斷t1樹是否包含t2樹的全部拓撲結構

題目: 給定彼此獨立的兩棵樹頭結點分別為t1和t2,判斷t1樹是否包含t2樹的全部拓撲結構。 t1樹包含t2樹的全部拓撲結構,所以返回true。 解答: 如果t1中某棵子樹節點的值與t2頭節點的值一樣,則從這兩個頭結點開始匹配,匹配的每一步都讓t1上的節點跟著t2

程式設計師程式碼面試指南》給定一個整數n,返回從1到n的數字中1出現的次數

題目: 給定一個整數n,返回從1到n的數字中1出現的次數。 例如: n=5,1~n為1,2,3,4,5。那麼1出現1次所以返回1。 n=11,1~n為1,2,3,4,5,6,7,8,9,10,11。那麼1出現的次數為1(1,10,11)返回4。 import j

程式設計師程式碼面試指南》 整數的二進位制表示式中有多少1

題目: 給定一個32位整數n,可為0,可為正,也可以為負,返回該整數二進位制表示式中1的個數。 解答: 最簡單解法。整數n每次進行無符號右移一位,檢查最右邊的bit是否為1來進行統計。 public static int count1(int n){

程式設計師程式碼面試指南》 給定一個整型矩陣 matrix 請按照轉圈的方式列印它

題目 給定一個整型矩陣 matrix ,請按照轉圈的方式列印它。 例如: 1    2    3     4 5    6    7     8 9    10  11   12 13  14  15   16 列印結果為:1,2,3,4,8