原创 劍指offer 54 二叉搜索樹的第k大節點

題目描述 題目轉載自Leetcode 給定一棵二叉搜索樹,請找出其中第k大的節點。 示例 1: 輸入: root = [3,1,4,null,2], k = 1 3 輸出: 4 示例 2: 輸入: root = [5,3,6,2

原创 劍指offer 15 二進制中1的個數

題目描述 題目轉自Leetcode 請實現一個函數,輸入一個整數,輸出該數二進制表示中 1 的個數。例如,把 9 表示成二進制是 1001,有 2 位是 1。因此,如果輸入 9,則該函數輸出 2。 示例 1: 輸入:0000000

原创 劍指offer25 合併兩個排序的鏈表

題目描述 題目轉載自Leetcode 輸入兩個遞增排序的鏈表,合併這兩個鏈表並使新鏈表中的節點仍然是遞增排序的。 示例1: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4->4 限制: 0 <= 鏈表長度

原创 劍指offer 24 反轉鏈表

題目描述 題目轉自Leetcode 定義一個函數,輸入一個鏈表的頭節點,反轉該鏈表並輸出反轉後鏈表的頭節點。 示例: 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 限制: 0 <=

原创 面試題 32-II 從上到下打印二叉樹

題目描述 題目轉載自LeetCode 從上到下按層打印二叉樹,同一層的節點按從左到右的順序打印,每一層打印到一行。 例如: 給定二叉樹: [3,9,20,null,null,15,7], 返回其層次遍歷結果: [ [3], [9

原创 劍指offer 09 用兩個棧實現一個隊列

題目描述 轉載自Leetcode 用兩個棧實現一個隊列。隊列的聲明如下,請實現它的兩個函數 appendTail 和 deleteHead ,分別完成在隊列尾部插入整數和在隊列頭部刪除整數的功能。(若隊列中沒有元素,deleteH

原创 劍指offer 68-II 二叉樹的最近公共祖先

題目描述 題目轉載自LeetCode 給定一個二叉樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義爲:“對於有根樹 T 的兩個結點 p、q,最近公共祖先表示爲一個結點 x,滿足 x 是 p、q 的祖先且

原创 劍指offer 68-I 二叉搜索樹的最近公共祖先

題目描述 題目轉載自Leetcode 給定一個二叉搜索樹, 找到該樹中兩個指定節點的最近公共祖先。 百度百科中最近公共祖先的定義爲:“對於有根樹 T 的兩個結點 p、q,最近公共祖先表示爲一個結點 x,滿足 x 是 p、q 的祖先

原创 劍指offer 21 調整數組順序使奇數位於偶數前面

題目描述 題目來源Leetcode 輸入一個整數數組,實現一個函數來調整該數組中數字的順序,使得所有奇數位於數組的前半部分,所有偶數位於數組的後半部分。 示例: 輸入:nums = [1,2,3,4] 輸出:[1,3,2,4] 注

原创 劍指offer 52 兩個鏈表的第一個公共節點

題目轉載自Leetcode 題目描述 輸入兩個鏈表,找出它們的第一個公共節點。 如下面的兩個鏈表: 在節點 c1 開始相交。 示例 1: 輸入:intersectVal = 8, listA = [4,1,8,4,5], li

原创 劍指offer 57 和爲s的兩個數字

題目轉載自LeetCode 題目描述 輸入一個遞增排序的數組和一個數字s,在數組中查找兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。 示例 1: 輸入:nums = [2,7,11,15], targ

原创 劍指offer 50 第一個只出現一次的字符

題目鏈接 在字符串 s 中找出第一個只出現一次的字符。如果沒有,返回一個單空格。 示例: s = “abaccdeff” 返回 “b” s = “” 返回 " " 限制: 0 <= s 的長度 <= 50000 轉載自題解鏈接 代

原创 劍指offer 18. 刪除鏈表的節點

給定單向鏈表的頭指針和一個要刪除的節點的值,定義一個函數刪除該節點。 返回刪除後的鏈表的頭節點。 注意:此題對比原題有改動 示例 1: 輸入: head = [4,5,1,9], val = 5 輸出: [4,1,9] 解釋: 給

原创 劍指offer 42 連續子數組的最大和

題目鏈接 輸入一個整型數組,數組裏有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。 要求時間複雜度爲O(n)。 示例1: 輸入: nums = [-2,1,-3,4,-1,2,1,-5,4] 輸

原创 劍指offer 30. 包含min函數的棧

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