劍指offer演算法程式設計題目部分彙總(解法略)

2021-08-01 20:42:20 字數 1674 閱讀 9203

總結一下本書中遇到的大部分面試題。面試題3:二維陣列中的查詢

題目:在乙個二維陣列中,每一行都按照從左到右的遞增順序排列,每一列都按照從上到下遞增的順序排列,請完成乙個函式,輸入這樣的乙個整數,判斷陣列中是否含有該整數。

面試題4:替換空格

題目:請實現乙個函式,把字串中的每個空格替換成%20。

面試題5:從尾到頭列印鍊錶

題目:輸入乙個鍊錶的頭結點,從尾到頭反過來列印每個結點的值。

面試題6:重建二叉樹

題目:輸入某二叉樹前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設節點沒有重複的。

面試題7:用兩個棧實現佇列

題目描述:如題。

面試題8:旋轉陣列的最小數字

題目:把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的乙個旋轉。輸入乙個遞增排序的陣列的乙個旋轉,輸出旋轉陣列的最小值。

面試題9:斐波那契數列及其相關應用

面試題10:二進位制數中1的個數(如果是移位的話數為負數會死迴圈)(有驚喜解法)

面試題11:數值的整數次方(有陷阱)

面試題12:列印1到最大的n位數(用字串列印)

面試題13:在o(1)時間內刪除鍊錶節點

題目描述:給定單向鍊錶的頭指標和乙個結點指標,定義乙個函式在o(1)時間刪除該節點

面試題14:調整陣列順序使技術位於偶數前面

題目:輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。(設計模式的抽象)

面試題15:鍊錶中倒數第k個結點(陷阱)

面試題16:反轉鍊錶

面試題17:合併兩個排序的鍊錶

面試題18:樹的子結構

題目:輸入兩棵二叉樹a和b,判斷b是不是a的子結構。

面試題19:二叉樹的映象(最好畫圖來,更直觀)

面試題20:順時針列印矩陣

面試題21:包含min函式的棧

面試題22:棧的壓入彈出序列

題目:輸入兩個整數序列,第乙個序列表示棧的壓入序列,第二個表示棧的彈出序列,請判斷第二個序列是否為棧的彈出序列(假設棧中數字沒有相同的)

面試題23:從上往下列印二叉樹(入佇列)

面試題24:二叉搜尋樹的後序遍歷序列

題目:輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷序列,是則返回true,否則返回false,假設輸入的輸入的任意兩個數都不同。

面試題25:二叉樹中和為某一值的路徑

面試題26:複雜鍊錶的複製

面試題27:二叉搜尋樹與雙向鍊錶

題目:輸入一顆二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶,要求不能建立任何新的節點,只能調整樹種結點指標的指向

面試題28:字串的排列

題目:輸入乙個字串,列印出該字串中字元的所有排列。

面試題29:陣列中出線次數超過一半的數字

面試題30:最小的k個數

面試題31:連續子陣列的最大和

面試題32:從1到n整數中1出現的次數

面試題33:把陣列排成最小的數

面試題34:醜數

面試題35:第乙個只出現一次的字元(簡易hash表)

面試題36:陣列中的逆序對

面試題37:兩個鍊錶的第乙個公共節點(壓棧)

面試題38:數字在排序陣列中出現的次數

面試題39:二叉樹的深度

暫時先整理到這麼多吧,有一些題目還是比較具有代表性的。

劍指offer演算法程式設計題目部分彙總(解法略)

總結一下本書中遇到的大部分面試題。面試題3 二維陣列中的查詢 題目 在乙個二維陣列中,每一行都按照從左到右的遞增順序排列,每一列都按照從上到下遞增的順序排列,請完成乙個函式,輸入這樣的乙個整數,判斷陣列中是否含有該整數。面試題4 替換空格 題目 請實現乙個函式,把字串中的每個空格替換成 20。面試題...

劍指offer演算法部分

遞迴 定義 在乙個函式的內部呼叫這個函式自身 優點 簡潔 2.遞迴中可能很多計算都是重複的 遞迴的本質是把乙個問題分解成兩個或多個問題 小問題存在相互重疊的部分,就存在重複計算 3.還可能存在呼叫棧溢位的情況 迴圈 設定計算的初始以及終止條件,在乙個範圍內重複計算 總結 基於遞迴的實現方法比較簡潔,...

劍指offer題目

在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。把乙個陣列最開始的若干個元素搬到陣列的末尾,我們稱之為陣列的旋轉。輸入乙個非減排序的陣列的乙個旋轉,輸出旋轉陣...