10.3 - hard總結2

87. Scramble String: 區間dp加上memory search
97. Interleaving String: 簡單的雙鏈dp問題
99. Recover Binary Search Tree: 利用inorder的方法找到兩個變化的值,然后對node進行重新賦值
115. Distinct Subsequences: 又是雙鏈的dp問題
123. Best Time to Buy and Sell Stock III: 因為最多買賣兩次,可以記錄每一點之前的片段可以獲得最大值和每一點之后的片段可以獲得的最大值,然后找出最大的分割點就可以了
124. Binary Tree Maximum Path Sum: 在helper函數里記錄兩個值,一個是maxvalue,一個maxsinglevalue
126. Word Ladder II:這題用bfs,然后記錄一個逆向的trace
128. Longest Consecutive Sequence: 利用hash,還是比較容易做的
132. Palindrome Partitioning II:先用一個二維dp計算出所有i~j滿足panlin的情況,然后再用一個一維dp來選擇出最小的cut的情況
135. Candy: greedy的方法
140. Word Break II: 有時候在backtracking的時候可以返回一個list
145. Binary Tree Postorder Traversal: 有一個逆轉preorder的寫法,但感覺這個寫法不是正途,如果在其它程序里需要用到這個片段的話,就沒辦法了
146. LRU Cache: 基本想法就是字典+上雙向鏈表,字典里存的是key到鏈表的節點,每次訪問的時候可以把訪問的元素從鏈表里拆開,然后放到最后一位。
149. Max Points on a Line: 利用hash表慢慢做就好了
154. Find Minimum in Rotated Sorted Array II: 這個如果有duplicates就沒辦法了,時間復雜度就沒法優化了
158. Read N Characters Given Read4 II - Call multiple times: 如果要call很多次,就要設置一個全局變量queue來存儲所有讀進來的chars
159. Longest Substring with At Most Two Distinct Characters: 簡單的前向型指針問題
164. Maximum Gap: 比較麻煩的一道題,要用到bucketsort
174. Dungeon Game: 很巧妙的一道題,利用逆向dp,也就是從終點開始的dp,# dp[i][j] the minimum hp for i,j to go to the last block
188. Best Time to Buy and Sell Stock IV: 一道比較經典的dp題 # dp[i][j] 對前j個元素進行最多i次transactions獲取的最大值, 有點兒區間dp的意思

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,775評論 0 33
  • LeetCode 刷題隨手記 - 第一部分 前 256 題(非會員),僅算法題,的吐槽 https://leetc...
    蕾娜漢默閱讀 17,934評論 2 36
  • 動態規劃(Dynamic Programming) 本文包括: 動態規劃定義 狀態轉移方程 動態規劃算法步驟 最長...
    廖少少閱讀 3,338評論 0 18
  • 198. House Robber【Easy DP】You are a professional robber p...
    GeniusYY閱讀 1,163評論 0 0
  • 每一個現在的你,都是所有成長經歷的堆砌。你不愛講自己的故事,至少是那個聽故事的人。你和朋友喝著酒,心里想的卻是與...
    落蕉公子閱讀 778評論 3 4