LeetCode - Binary Tree Level Order Traversal(二元樹的層次遍歷)
題目描述 給定一個二元樹,返回其節點值的層次遍歷結果(即從上到下,逐層訪問每一層的節點)。 範例: 輸入: 3 / \ 9 20 / \ 15 7 輸出:[[3], [9, 20], [15, 7]] 限制: 樹中節點的數量範圍是 [0, 2000]。 節點的值範圍是 [-1000, 1000]。 解法思路 可以使用廣度優先搜索...
題目描述 給定一個二元樹,返回其節點值的層次遍歷結果(即從上到下,逐層訪問每一層的節點)。 範例: 輸入: 3 / \ 9 20 / \ 15 7 輸出:[[3], [9, 20], [15, 7]] 限制: 樹中節點的數量範圍是 [0, 2000]。 節點的值範圍是 [-1000, 1000]。 解法思路 可以使用廣度優先搜索...
題目描述 給定一個二元樹,翻轉該樹,即將每個節點的左右子樹交換。返回翻轉後的樹的根節點。 範例: 輸入: 4 / \ 2 7 / \ / \ 1 3 6 9 輸出: 4 / \ 7 2 / \ / \ 9 6 3 1 限制: 節點的數量範圍是 [0, 100]。 節點值範圍是 [-...
題目描述 給定一個二元樹,找出其最大深度。二元樹的深度是從根節點到最遠葉節點的最長路徑上的節點數。 範例: 輸入:root = [3,9,20,null,null,15,7] 輸出:3 解釋:此二元樹的最大深度為 3。 輸入:root = [1,null,2] 輸出:2 限制: 二元樹的節點數量範圍是 [0, 10^4]。 樹的深度範圍不限,樹可能是空的。 解法思路...
題目描述 給定一個單向鏈表,刪除鏈表的倒數第 n 個節點,並返回鏈表的頭節點。 範例: 輸入:head = [1,2,3,4,5], n = 2 輸出:[1,2,3,5] 輸入:head = [1], n = 1 輸出:[] 輸入:head = [1,2], n = 1 輸出:[1] 限制: 鏈表中節點的數量為 sz,1 <= sz <= 30。 0 &...
題目描述 給定一個單向鏈表,判斷鏈表中是否存在環。如果有環,返回 True;否則,返回 False。 範例: 輸入:head = [3,2,0,-4],pos = 1 輸出:True 解釋:鏈表中有一個環,尾部連接到索引 1 的節點(節點值為 2)。 輸入:head = [1,2],pos = 0 輸出:True 解釋:鏈表中有一個環,尾部連接到索引 0 的節點(節點值為 1)。 ...
題目描述 給定兩個已排序的單向鏈表 list1 和 list2,將它們合併成一個新的排序鏈表並返回。新的鏈表應該由兩個鏈表的所有節點組成。 範例: 輸入:list1 = 1 -> 2 -> 4, list2 = 1 -> 3 -> 4 輸出:1 -> 1 -> 2 -> 3 -> 4 -> 4 輸入:list1 = [], lis...
題目描述 給定一個單向鏈表,將鏈表進行反轉並返回反轉後的鏈表頭結點。 範例: 輸入:1 -> 2 -> 3 -> 4 -> 5 -> NULL 輸出:5 -> 4 -> 3 -> 2 -> 1 -> NULL 限制: 你可以使用迭代法或遞歸法解決這個問題。 解法思路 鏈表的反轉可以通過迭代或遞歸兩種方式完成。下面介...
題目描述 實現 strStr() 函數。 給定兩個字符串 haystack 和 needle,在 haystack 中找到 needle 出現的第一個位置(從 0 開始),如果 needle 不是 haystack 的一部分,則返回 -1。 例子: 輸入:haystack = "hello", needle = "ll" 輸出:2 輸入:haystack = "aaaaa", nee...
題目描述 給定一個字符串 s,找到 s 中最長的回文子串。回文串是指正讀和反讀相同的字符串。 範例: 輸入:s = "babad" 輸出:"bab" 解釋:"aba" 也是一個有效答案。 輸入:s = "cbbd" 輸出:"bb" 注意: 如果存在多個長度相同的最長回文子串,返回其中任意一個。 解法思路 這是一個經典的中心擴展法問題。可以通過動態規劃或中心擴展來解決。 ...
題目描述 給定一組字符串數組 strs,將它們按照字母異位詞進行分組。字母異位詞是指由相同字母組成,但排列順序不同的字符串。 範例: 輸入:strs = ["eat", "tea", "tan", "ate", "nat", "bat"] 輸出:[["eat", "tea", "ate"], ["tan", "nat"], ["bat"]] 解釋:字母異位詞如 "eat"、"tea" 和...