原创 LeetCode 700. 二叉搜索樹中的搜索

700. 二叉搜索樹中的搜索 給定二叉搜索樹(BST)的根節點和一個值。 你需要在BST中找到節點值等於給定值的節點。 返回以該節點爲根的子樹。 如果節點不存在,則返回 NULL。 例如: 給定二叉搜索樹: 4

原创 LeetCode 108. 將有序數組轉換爲二叉搜索樹

108. 將有序數組轉換爲二叉搜索樹 將一個按照升序排列的有序數組,轉換爲一棵高度平衡二叉搜索樹。 本題中,一個高度平衡二叉樹是指一個二叉樹每個節點 的左右兩個子樹的高度差的絕對值不超過 1。 例如: 給定有序數組: [-10,-3,0

原创 LeetCode 211. 添加與搜索單詞 - 數據結構設計

211. 添加與搜索單詞 - 數據結構設計 設計一個支持以下兩種操作的數據結構: void addWord(word) bool search(word) search(word) 可以搜索文字或正則表達式字符串,字符串只包含字母 .

原创 LeetCode 208. 實現 Trie (前綴樹)

208. 實現 Trie (前綴樹) 實現一個 Trie (前綴樹),包含 insert, search, 和 startsWith 這三個操作。 示例: Trie trie = new Trie(); trie.insert("ap

原创 LeetCode 226. 翻轉二叉樹

226. 翻轉二叉樹 翻轉一棵二叉樹。 示例: 輸入: 4 / \ 2 7 / \ / \ 1 3 6 9 輸出: 4 / \ 7 2 / \ /

原创 LeetCode 617. 合併二叉樹

617. 合併二叉樹 給定兩個二叉樹,想象當你將它們中的一個覆蓋到另一個上時,兩個二叉樹的一些節點便會重疊。 你需要將他們合併爲一個新的二叉樹。合併的規則是如果兩個節點重疊,那麼將他們的值相加作爲節點合併後的新值,否則不爲 NULL

原创 LeetCode 307. 區域和檢索 - 數組可修改

307. 區域和檢索 - 數組可修改 給定一個整數數組 nums,求出數組從索引 i 到 j (i ≤ j) 範圍內元素的總和,包含 i, j 兩點。 update(i, val) 函數可以通過將下標爲 i 的數值更新爲 val

原创 LeetCode 303. 區域和檢索 - 數組不可變

303. 區域和檢索 - 數組不可變 給定一個整數數組 nums,求出數組從索引 i 到 j (i ≤ j) 範圍內元素的總和,包含 i, j 兩點。 示例: 給定 nums = [-2, 0, 3, -5, 2, -1],求和函

原创 LeetCode 347. 前 K 個高頻元素

347. 前 K 個高頻元素 給定一個非空的整數數組,返回其中出現頻率前 k 高的元素。 示例1: 輸入: nums = [1,1,1,2,2,3], k = 2 輸出: [1,2] 示例2: 輸入: nums = [1], k =

原创 LeetCode 137. 只出現一次的數字 II

137. 只出現一次的數字 II 給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現了三次。找出那個只出現了一次的元素。 說明: 你的算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎? 示例1: 輸入: [2

原创 LeetCode 500. 鍵盤行

500. 鍵盤行 給定一個單詞列表,只返回可以使用在鍵盤同一行的字母打印出來的單詞。鍵盤如下圖所示。 示例: 輸入: ["Hello", "Alaska", "Dad", "Peace"] 輸出: ["Alaska", "Dad"]

原创 LeetCode 350. 兩個數組的交集 II

350. 兩個數組的交集 II 給定兩個數組,編寫一個函數來計算它們的交集。 示例1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2,2] 示例2: 輸入: nums1 = [4,9,5],

原创 LeetCode 1002. 查找常用字符

1002. 查找常用字符 給定僅有小寫字母組成的字符串數組 A,返回列表中的每個字符串中都顯示的全部字符(包括重複字符)組成的列表。例如,如果一個字符在每個字符串中出現 3 次,但不是 4 次,則需要在最終答案中包含該字符 3 次。

原创 LeetCode 771. 寶石與石頭

771. 寶石與石頭 給定字符串J 代表石頭中寶石的類型,和字符串 S代表你擁有的石頭。 S 中每個字符代表了一種你擁有的石頭的類型,你想知道你擁有的石頭中有多少是寶石。 J 中的字母不重複,J 和 S中的所有字符都是字母。字母區分大

原创 LeetCode 145. 二叉樹的後序遍歷

145. 二叉樹的後序遍歷 給定一個二叉樹,返回它的 後序 遍歷。 示例: 輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [3,2,1] 進階: 遞歸算法很簡單,你可以通