原创 LeetCode 力扣 100. 相同的樹

題目描述(簡單難度) 判斷兩個二叉樹是否相同。 解法一 這道題就很簡單了,只要把兩個樹同時遍歷一下,遍歷過程中判斷數值是否相等或者同時爲 null 即可。而遍歷的方法,當然可以選擇 DFS 裏的先序遍歷,中序遍歷,後序遍歷,或

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

題目描述(中等難度) 和 108 題 是一樣的,都是給定一個升序序列,然後生成二分平衡查找樹。區別在於 108 題給定的是數組,這裏給的是鏈表。 解法一 大家先看一下 108 題 吧,算法的關鍵是取到中間的數據做爲根節點。而這

原创 LeetCode 力扣 115. 不同的子序列

題目描述(困難難度) 給定兩個字符串 S 和T,從 S 中選擇字母,使得剛好和 T 相等,有多少種選法。 解法一 遞歸之分治 S 中的每個字母就是兩種可能選他或者不選他。我們用遞歸的常規思路,將大問題化成小問題,也就是分治的思想

原创 LeetCode 力扣 116. 填充每個節點的下一個右側節點指針

題目描述(中等難度) 給定一個滿二叉樹,每個節點多了一個next指針,然後將所有的next指針指向它的右邊的節點。並且要求空間複雜度是O(1)。 解法一 BFS 如果沒有要求空間複雜度這道題就簡單多了,我們只需要用一個隊列做B

原创 LeetCode 力扣 122. 買賣股票的最佳時機 II

題目描述(簡單難度) 和 121 題 一樣,給定一個數組,代表每天的價格。區別在於 121 題只能進行一次買入賣出。但是這道題可以不停的買入、賣出,但是隻有賣出了才能繼續買入。 解法一 就用最簡單的思想,我們穿越回去了過去,知道

原创 LeetCode 力扣 125. 驗證迴文串

題目描述(簡單難度) 判斷一個字符串是否是迴文串,忽略掉除了字母和數字外的字符。 解法一 兩個指針,一個指針從頭進行,一個指針從尾部進行。依次判斷兩個指針的字符是否相等,同時要跳過非法字符。需要注意的是,兩個指針不用從頭到尾遍歷

原创 LeetCode 力扣 105. 從前序與中序遍歷序列構造二叉樹

題目描述(中等難度) 根據二叉樹的先序遍歷和中序遍歷還原二叉樹。 解法一 遞歸 先序遍歷的順序是根節點,左子樹,右子樹。中序遍歷的順序是左子樹,根節點,右子樹。 所以我們只需要根據先序遍歷得到根節點,然後在中序遍歷中找到根節點的

原创 LeetCode 力扣 124. 二叉樹中的最大路徑和

題目描述(困難難度) 考慮一條路徑,可以從任意節點開始,每個節點最多經過一次,問經過的節點的和最大是多少。 解法一 遞歸 參考了 這裏。 首先看到二叉樹的題,肯定就是想遞歸了。遞歸常規的思路,肯定是遞歸考慮左子樹的最大值,遞歸考

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

題目描述(簡單難度) 樹的層次遍歷,和 102 題 的不同之處是,之前輸出的數組順序是從根部一層一層的輸出,現在是從底部,一層一層的輸出。 解法一 DFS 把 102 題 的DFS貼過來看一下。 public List<List

原创 LeetCode 力扣 114. 二叉樹展開爲鏈表

題目描述(中等難度) 把一個二叉樹展開成一個鏈表,展開順序如圖所示。 解法一 可以發現展開的順序其實就是二叉樹的先序遍歷。算法和 94 題 中序遍歷的 Morris 算法有些神似,我們需要兩步完成這道題。 將左子樹插入到右子樹

原创 LeetCode 力扣 104. 二叉樹的最大深度

題目描述(簡單難度) 輸出二叉樹的深度。 解法一 DFS 依舊是考的二叉樹的遍歷。最簡單的思路就是用遞歸進行 DFS 即可。 public int maxDepth(TreeNode root) { if (root

原创 LeetCode 力扣 118. 楊輝三角

題目描述(簡單難度) 其實就是楊輝三角,當前元素等於上一層的兩個元素的和。 解法一 用兩層循環,注意一下我們下標是從 0 開始還是從 1 開始,然後就可以寫出來了。 public List<List<Integer>> gene

原创 LeetCode 力扣 119. 楊輝三角 II

題目描述(簡單難度) 和 118 題 一樣,依舊是楊輝三角。區別在於之前是輸出所有層的數,這道題只需要輸出第 k 層的數。 解法一 和 118 題 一樣,我們只需要一層一層的求。但是不需要把每一層的結果都保存起來,只需要保存上一

原创 LeetCode 力扣 138. 複製帶隨機指針的鏈表

題目描述(中等難度) 給一個鏈表,返回複製後的鏈表。鏈表節點相對於普通的多了一個 random 指針,會隨機指向鏈表內的任意節點或者指向 null。 思路分析 這道題其實和 133 題 複製一個圖很類似,這裏的話就是要解決的問題

原创 LeetCode 力扣 135. 分發糖果

題目描述(困難難度) 給 N 個小朋友分糖,每個人至少有一顆糖。並且有一個 rating 數組,如果小朋友的 rating比它旁邊小朋友的 rating 大(不包括等於),那麼他必須要比對應小朋友的糖多。問至少需要分配多少顆糖。