原创 【二分】LeetCode 33. 搜索旋轉排序數組【中等】

整數數組 nums 按升序排列,數組中的值 互不相同 。 在傳遞給函數之前,nums 在預先未知的某個下標 k(0 <= k < nums.length)上進行了 旋轉,使數組變爲 [nums[k], nums[k+1], ..., num

原创 【貪心】LeetCode 406. 根據身高重建隊列【中等】

假設有打亂順序的一羣人站成一個隊列,數組 people 表示隊列中一些人的屬性(不一定按順序)。每個 people[i] = [hi, ki] 表示第 i 個人的身高爲 hi ,前面 正好 有 ki 個身高大於或等於 hi 的人。 請你重新

原创 【貪心】LeetCode 309. 最佳買賣股票時機含冷凍期【中等】

給定一個整數數組prices,其中第  prices[i] 表示第 i 天的股票價格 。​ 設計一個算法計算出最大利潤。在滿足以下約束條件下,你可以儘可能地完成更多的交易(多次買賣一支股票): 賣出股票後,你無法在第二天買入股票 (即冷凍期

原创 【貪心】LeetCode 714. 買賣股票的最佳時機含手續費【中等】

給定一個整數數組 prices,其中 prices[i]表示第 i 天的股票價格 ;整數 fee 代表了交易股票的手續費用。 你可以無限次地完成交易,但是你每筆交易都需要付手續費。如果你已經購買了一個股票,在賣出它之前你就不能再繼續購買股票

原创 【貪心】LeetCode 55. 跳躍遊戲【中等】

給定一個非負整數數組 nums ,你最初位於數組的 第一個下標 。 數組中的每個元素代表你在該位置可以跳躍的最大長度。 判斷你是否能夠到達最後一個下標。   示例 1: 輸入:nums = [2,3,1,1,4]輸出:true解釋:可以先跳

原创 【貪心】LeetCode 122. 買賣股票的最佳時機 II【中等】

給你一個整數數組 prices ,其中 prices[i] 表示某支股票第 i 天的價格。 在每一天,你可以決定是否購買和/或出售股票。你在任何時候 最多 只能持有 一股 股票。你也可以先購買,然後在 同一天 出售。 返回 你能獲

原创 【貪心】LeetCode 11. 盛最多水的容器【中等】

給定一個長度爲 n 的整數數組 height 。有 n 條垂線,第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線,使得它們與 x 軸共同構成的容器可以容納最多的水。 返回容器可以儲存的最大水量。

原创 【模擬】LeetCode 48. 旋轉圖像【中等】

給定一個 n × n 的二維矩陣 matrix 表示一個圖像。請你將圖像順時針旋轉 90 度。 你必須在 原地 旋轉圖像,這意味着你需要直接修改輸入的二維矩陣。請不要 使用另一個矩陣來旋轉圖像。 示例1: 輸入:matrix = [[1,

原创 【二叉搜索樹】LeetCode 98. 驗證二叉搜索樹【中等】

給你一個二叉樹的根節點 root ,判斷其是否是一個有效的二叉搜索樹。 有效 二叉搜索樹定義如下: 節點的左子樹只包含 小於 當前節點的數。節點的右子樹只包含 大於 當前節點的數。所有左子樹和右子樹自身必須也是二叉搜索樹。 示例 1:  

原创 【二叉樹】LeetCode 543. 二叉樹的直徑【簡單】

給定一棵二叉樹,你需要計算它的直徑長度。一棵二叉樹的直徑長度是任意兩個結點路徑長度中的最大值。這條路徑可能穿過也可能不穿過根結點。 示例 :給定二叉樹 1 / \ 2 3 / \ 4 5

原创 【二叉搜索樹】LeetCode 96. 不同的二叉搜索樹【中等】

給你一個整數 n ,求恰由 n 個節點組成且節點值從 1 到 n 互不相同的 二叉搜索樹 有多少種?返回滿足題意的二叉搜索樹的種數。 示例 1:       輸入:n = 3 輸出:5 示例 2: 輸入:n = 1 輸出:1  提

原创 【二叉樹】LeetCode 114. 二叉樹展開爲鏈表【中等】

給你二叉樹的根結點 root ,請你將它展開爲一個單鏈表: 展開後的單鏈表應該同樣使用 TreeNode ,其中 right 子指針指向鏈表中下一個結點,而左子指針始終爲 null 。展開後的單鏈表應該與二叉樹 先序遍歷 順序相同。 示例

原创 【二叉樹】106. 從中序與後序遍歷序列構造二叉樹 【中等】

給定兩個整數數組 inorder 和 postorder ,其中 inorder 是二叉樹的中序遍歷, postorder 是同一棵樹的後序遍歷,請你構造並返回這棵 二叉樹 。 示例1:   輸入:inorder = [9,3,15,20

原创 【二叉樹】LeetCode 105. 從前序與中序遍歷序列構造二叉樹【中等】

給定兩個整數數組 preorder 和 inorder ,其中 preorder 是二叉樹的先序遍歷, inorder 是同一棵樹的中序遍歷,請構造二叉樹並返回其根節點。 示例 1:   輸入: preorder = [3,9,20,15

原创 【二叉樹】LeetCode 102. 二叉樹的層序遍歷【中等】

給你二叉樹的根節點 root ,返回其節點值的 層序遍歷 。 (即逐層地,從左到右訪問所有節點)。 示例 1:     輸入:root = [3,9,20,null,null,15,7]輸出:[[3],[9,20],[15,7]]示例 2