原创 算法 |《劍指offer》面試題39.數組中出現次數超過一半的數字

數組中有一個數字出現的次數超過數組長度的一半,請找出這個數字。 你可以假設數組是非空的,並且給定的數組總是存在多數元素。 示例 1: 輸入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 輸出: 2 限制: 1 <= 數

原创 算法 |《劍指offer》面試題68-I.二叉搜索樹的最近公共祖先

給定一個二叉搜索樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義爲:“對於有根樹 T 的兩個結點 p、q,最近公共祖先表示爲一個結點 x,滿足 x 是 p、q 的祖先且 x 的深度儘可能大(一個節點也可以

原创 算法 |《劍指offer》面試題54.二叉樹的第k大節點

給定一棵二叉搜索樹,請找出其中第k大的節點。 示例 1: 示例 2: 限制: 1 ≤ k ≤ 二叉搜索樹元素個數 題解: /** * Definition for a binary tree node. * public

原创 前端 | hexo+yilia博客主題設置網頁ico小圖標

我們常常可以看到不同網站都有專屬的網頁小圖標,比如CSDN這個醒目的C,確實讓人眼前一亮的感覺。 那麼在hexo+yilia主題裏怎麼設置這個網頁小圖標呢? 第一步: 首先我們需要製作小圖標圖,一般網上都有在線製作的工具,這裏

原创 算法 |《劍指offer》面試題68-II.二叉樹的最近公共祖先

給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義爲:“對於有根樹 T 的兩個結點 p、q,最近公共祖先表示爲一個結點 x,滿足 x 是 p、q 的祖先且 x 的深度儘可能大(一個節點也可以是它

原创 算法 |《劍指offer》面試題55-II.平衡二叉樹

輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那麼它就是一棵平衡二叉樹。 示例 1: 給定二叉樹 [3,9,20,null,null,15,7] 返回 true 。 示例

原创 算法 |《劍指offer》面試題55-I.二叉樹的深度

輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點(含根、葉節點)形成樹的一條路徑,最長路徑的長度爲樹的深度。 例如: 給定二叉樹 [3,9,20,null,null,15,7], [外鏈圖片轉存失敗,源站可能有

原创 算法 |《劍指offer》面試題28. 對稱的二叉樹

請實現一個函數,用來判斷一棵二叉樹是不是對稱的。如果一棵二叉樹和它的鏡像一樣,那麼它是對稱的。 示例 1: 輸入:root = [1,2,2,3,4,4,3] 輸出:true 示例 2: 輸入:root = [1,2,2,nul

原创 算法 | 《劍指offer》面試題26. 樹的子結構

輸入兩棵二叉樹A和B,判斷B是不是A的子結構。(約定空樹不是任意一個樹的子結構) B是A的子結構, 即 A中有出現和B相同的結構和節點值。 例如: 給定的樹 A: ​ 3 ​ / 4 5 / 1 2 給定

原创 算法 |《劍指offer》面試題30. 包含min函數的最小棧

定義棧的數據結構,請在該類型中實現一個能夠得到棧的最小元素的 min 函數在該棧中,調用 min、push 及 pop 的時間複雜度都是 O(1)。 示例: MinStack minStack = new MinStack();

原创 算法 |《劍指offer》面試題27. 二叉樹的鏡像

請完成一個函數,輸入一個二叉樹,該函數輸出它的鏡像。 例如輸入: ​ 4 / 2 7 / \ / 1 3 6 9 鏡像輸出: 4 / 7 2 / \ / 9 6 3 1

原创 算法 |《劍指offer》面試題31.棧的壓入、彈出序列

輸入兩個整數序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否爲該棧的彈出順序。假設壓入棧的所有數字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對應的一個彈出序列,

原创 算法 |《劍指offer》面試題32-III.從上到下打印二叉樹

請實現一個函數按照之字形順序打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右到左的順序打印,第三行再按照從左到右的順序打印,其他行以此類推。 [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-

原创 算法 |《劍指offer》面試題33.二叉搜索樹的後序遍歷序列

輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷結果。如果是則返回 true,否則返回 false。假設輸入的數組的任意兩個數字都互不相同。 參考以下這顆二叉搜索樹: 示例 1: 輸入: [1,6,3,2,5] 輸出:

原创 算法 |《劍指offer》面試題29. 順時針打印矩陣

輸入一個矩陣,按照從外向裏以順時針的順序依次打印出每一個數字。 示例 1: 輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 輸出:[1,2,3,6,9,8,7,4,5] 示例 2: 輸入:matrix