62.不同路徑
64.最小路徑和
70.爬樓梯
這道題很容易看出來可以用dfs解決,但是其中有乙個容易迷惑的點,就是所謂的「最長路徑」並不一定經過根節點!
因此,我們需要在dfs的過程中,對每乙個節點,計算其左子樹的高度l以及右子樹的高度r,那麼以當前節點為起點的路徑,經過的節點的最大值就是l+r+1,並且不斷的去更新最大值。
而路徑的長度就是節點數減去1,因此最後返回ans-1;
此類簡化版本的迷宮問題,一上手首先想到的就是dfs,並且它的決策樹也是只有兩個分支,因此十分簡單
但是此題用dfs會超時,所以想到使用動態規劃的方法,定義乙個二維動態規劃陣列dp,dp[i][j]表示以(i,j)作為終點時,可以選擇的最大路徑樹,由於只能向右或者向下,顯而易見,狀態轉移方程:
顯而易見的一道動態規劃題目,沒啥可說的
每次爬乙個或兩個台階,可以看成是決策樹的分叉,寫出dfs的**並不困難,但是依然會超時,進而考慮動態規劃,定義一維陣列dp,dp[i]表示當高度為i時爬到頂樓的方法數,而到達i層,可以從i-2層爬兩層,也可以從i-1層爬一層,所以狀態轉移方程:
dp[i]=dp[i-1]+dp[i-2];
class
solution
dfs(n,cur+1)
;dfs
(n,cur+2)
;}intclimbstairs
(int n)
};
class
solution
};
leetcode熱題100刷題筆記 5
96.不同的二叉搜尋樹 98.驗證二叉搜尋樹 101.對稱二叉樹 如果用遞迴的方法來寫,此題非常的簡單,是乙個基礎題,要熟悉的是非遞迴的迭代版本,利用棧來求解 資料結構如果學的足夠紮實,就應該知道這是乙個很經典的問題,其實質就是問你,按照1 n的順序入棧,出棧的序列有多少種,其實就是卡特蘭數,只要知...
熱題HOT 100 簡單題 4 6
53.最大子序和 給定乙個整數陣列 nums 找到乙個具有最大和的連續子陣列 子陣列最少包含乙個元素 返回其最大和。示例 輸入 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。高階 如果你已經實現複雜度為 o n 的解法,嘗試使用更為精妙的分治法求解...
熱題HOT 100 簡單題10 12
141.環形鍊錶 給定乙個鍊錶,判斷鍊錶中是否有環。為了表示給定鍊錶中的環,我們使用整數 pos 來表示鍊錶尾連線到鍊錶中的位置 索引從 0 開始 如果 pos 是 1,則在該鍊錶中沒有環。示例 1 輸入 head 3,2,0,4 pos 1 輸出 true 解釋 鍊錶中有乙個環,其尾部連線到第二個...