原创 LeetCode 382. 鏈表隨機節點

題目描述: 給定一個單鏈表,隨機選擇鏈表的一個節點,並返回相應的節點值。保證每個節點被選的概率一樣。 進階: 如果鏈表十分大且長度未知,如何解決這個問題?你能否使用常數級空間複雜度實現? 示例: // 初始化一個單鏈表 [1,2,3].

原创 LeetCode 143. 重排鏈表

題目描述: 給定一個單鏈表 L:L0→L1→…→Ln-1→Ln , 將其重新排列後變爲: L0→Ln→L1→Ln-1→L2→Ln-2→… 你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。 示例 1: 給定鏈表 1->2->

原创 LeetCode 160. 相交鏈表

題目描述: 編寫一個程序,找到兩個單鏈表相交的起始節點。   例如,下面的兩個鏈表: A: a1 → a2 ↘ c1 → c2 → c3

原创 LeetCode 234. 迴文鏈表

題目描述: 請判斷一個鏈表是否爲迴文鏈表。 示例 1: 輸入: 1->2 輸出: false 示例 2: 輸入: 1->2->2->1 輸出: true 進階: 你能否用 O(n) 時間複雜度和 O(1) 空間複雜度解決此題?  

原创 LeetCode 109. 有序鏈表轉換二叉搜索樹

題目描述: 給定一個單鏈表,其中的元素按升序排序,將其轉換爲高度平衡的二叉搜索樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 示例: 給定的有序鏈表: [-10, -3, 0, 5,

原创 leetCode 155. 最小棧

題目描述: 設計一個支持 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧。 push(x) -- 將元素 x 推入棧中。 pop() -- 刪除棧頂的元素。 top() -- 獲取棧頂元素。 getMin() -- 檢

原创 LeetCode 107. 二叉樹的層次遍歷 II

題目描述: 給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷) 例如: 給定二叉樹 [3,9,20,null,null,15,7], 3 / \ 9 20

原创 leetCode 36. 有效的數獨

題目描述: 判斷一個 9x9 的數獨是否有效。只需要根據以下規則,驗證已經填入的數字是否有效即可。 數字 1-9 在每一行只能出現一次。 數字 1-9 在每一列只能出現一次。 數字 1-9 在每一個以粗實線分隔的 3x3 宮內只能出現一次

原创 LeetCode 239. 滑動窗口最大值

題目描述: 給定一個數組 nums,有一個大小爲 k 的滑動窗口從數組的最左側移動到數組的最右側。你只可以看到在滑動窗口 k 內的數字。滑動窗口每次只向右移動一位。 返回滑動窗口最大值。 示例: 輸入: nums = [1,3,-1,-

原创 LeetCode 92. 反轉鏈表 II

題目描述: 反轉從位置 m 到 n 的鏈表。請使用一趟掃描完成反轉。 說明: 1 ≤ m ≤ n ≤ 鏈表長度。 示例: 輸入: 1->2->3->4->5->NULL, m = 2, n = 4 輸出: 1->4->3->2->5->

原创 LeetCode 328. 奇偶鏈表

題目描述: 給定一個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裏的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。 請嘗試使用原地算法完成。你的算法的空間複雜度應爲 O(1),時間複雜度應爲 O(node

原创 leetCode 451. 根據字符出現頻率排序

題目描述: 給定一個字符串,請將字符串裏的字符按照出現的頻率降序排列。 示例 1: 輸入: "tree" 輸出: "eert" 解釋: 'e'出現兩次,'r'和't'都只出現一次。 因此'e'必須出現在'r'和't'之前。此外,"e

原创 LeetCode 297. 二叉樹的序列化與反序列化

題目描述: 序列化是將一個數據結構或者對象轉換爲連續的比特位的操作,進而可以將轉換後的數據存儲在一個文件或者內存中,同時也可以通過網絡傳輸到另一個計算機環境,採取相反方式重構得到原數據。 請設計一個算法來實現二叉樹的序列化與反序列化。這裏

原创 leetCode 49. 字母異位詞分組

題目描述: 給定一個字符串數組,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字符串。 示例: 輸入: ["eat", "tea", "tan", "ate", "nat", "bat"], 輸出: [ ["ate","

原创 LeetCode 238. 除自身以外數組的乘積

題目描述: 給定長度爲 n 的整數數組 nums,其中 n > 1,返回輸出數組 output ,其中 output[i] 等於 nums 中除 nums[i] 之外其餘各元素的乘積。 示例: 輸入: [1,2,3,4] 輸出: [24