LeetCode - Merge k Sorted Lists(合併 k 個排序鏈表)
題目描述 給定 k 個排序的鏈表,將它們合併成一個排序鏈表,並返回該排序鏈表的頭節點。 範例: 輸入:lists = [[1,4,5],[1,3,4],[2,6]] 輸出:[1,1,2,3,4,4,5,6] 解釋:所有鏈表合併後變成 [1,1,2,3,4,4,5,6] 輸入:lists = [] 輸出:[] 輸入:lists = [[]] 輸出:[] 限制: k == li...
題目描述 給定 k 個排序的鏈表,將它們合併成一個排序鏈表,並返回該排序鏈表的頭節點。 範例: 輸入:lists = [[1,4,5],[1,3,4],[2,6]] 輸出:[1,1,2,3,4,4,5,6] 解釋:所有鏈表合併後變成 [1,1,2,3,4,4,5,6] 輸入:lists = [] 輸出:[] 輸入:lists = [[]] 輸出:[] 限制: k == li...
題目描述 實現一個 MedianFinder 類,用於從數據流中找到中位數。支持以下兩種操作: void addNum(int num):從數據流中加入一個整數 num。 double findMedian():返回當前所有元素的中位數。 說明: 如果數據流中的元素數量是奇數,則中位數為中間元素。 如果數據流中的元素數量是偶數,則中位數為中間兩個元素的平均值。 範...
題目名稱: 題目描述 給定一個未排序的整數數組 nums 和一個整數 k,請返回數組中第 k 大的元素。 注意:必須在 O(N) 的時間內完成,適合使用快速選擇(Quickselect)算法。 範例: 輸入:nums = [3,2,1,5,6,4], k = 2 輸出:5 輸入:nums = [3,2,3,1,2,4,5,5,6], k = 4 輸出:4 限制: 1 &l...
題目描述 給定一個整數數組 nums 和一個整數 k,返回出現頻率最高的 k 個元素。返回的答案可以按任意順序排列。 範例: 輸入:nums = [1,1,1,2,2,3], k = 2 輸出:[1,2] 輸入:nums = [1], k = 1 輸出:[1] 限制: 1 <= nums.length <= 10^5 k 的範圍是 [1, the number...
題目描述 給定一個遞增排序的整數數組,將其轉換為一棵高度平衡的二元搜尋樹(BST)。高度平衡的意思是:每個節點的左右子樹高度差不超過 1。 範例: 輸入:nums = [-10, -3, 0, 5, 9] 輸出:[0, -3, 9, -10, null, 5] 解釋:[0, -10, 5, null, -3, null, 9] 也是正確答案。 解法思路 利用二元搜尋樹和數組的特性,我...
題目描述 給定一個二元搜尋樹(BST)的根節點以及兩個節點 p 和 q,找到它們的最低公共祖先(LCA)。 在二元搜尋樹中,最低公共祖先(LCA)定義為距離 p 和 q 最近的節點,且該節點是 p 和 q 的祖先。由於是二元搜尋樹,因此有以下特性: 對於每個節點 N,左子樹的所有節點值小於 N.val,右子樹的所有節點值大於 N.val。 範例: 輸入:root = [6,2,...
題目描述 給定一棵二元搜尋樹(BST)和一個整數 k,找出該樹中的第 k 小的元素。 範例: 輸入:root = [3,1,4,null,2], k = 1 輸出:1 輸入:root = [5,3,6,2,4,null,null,1], k = 3 輸出:3 限制: 樹中節點的數量範圍是 [1, 10^4]。 每個節點的值都是唯一的,且都為正數。 k 的值總是有效的,...
題目描述 給定一個二元樹的根節點,判斷該樹是否為有效的二元搜尋樹(BST)。 一個二元搜尋樹應滿足以下條件: 對於每個節點,其左子樹中的所有節點值小於該節點的值。 對於每個節點,其右子樹中的所有節點值大於該節點的值。 左右子樹也必須是二元搜尋樹。 範例: 輸入: root = [2,1,3] 輸出:true 輸入: root = [5,1,4,null...
題目描述 給定一個二元樹的根節點和兩個節點 p 和 q,找到這兩個節點的最低公共祖先(LCA)。 在一棵二元樹中,節點 p 和 q 的最低公共祖先是距離 p 和 q 最近的節點,且這個節點是 p 和 q 的祖先。節點可以是它自己的祖先。 範例: 輸入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 輸出:3 解釋:節點 5...
題目描述 設計一種算法來將二元樹轉換為字符串(序列化)並將字符串轉換回二元樹(反序列化)。 要求: 需要實現 serialize(root) 和 deserialize(data) 兩個函數。 serialize(root) 將一棵二元樹轉換為字符串。 deserialize(data) 將字符串轉換回原本的二元樹結構。 範例: 輸入:root = [1,2,3,nul...