leecode 5 最長回文子串 遞迴解法

2021-10-20 15:06:30 字數 787 閱讀 1991

動態規劃,本質上就是 帶備忘錄的遞迴的計算過程。遞迴過程為 自頂向下的問題拆解和自底向上的問題計算。迭代形式的動態規劃,略過問題拆解,直接計算,能節省一定的時空。

本題中,因遞迴法的時空效率太差(擊敗5%),需進一步優化(改為迭代形式)。

分析過程:

遞迴過程(暴力遞迴窮舉 + 備忘錄優化)

構造遞迴遍歷(二叉樹遍歷框架)。構造遞迴,就是發現最優子結構的過程。對於最長回文子串,我們在構造遞迴時,關注怎麼遍歷所有子串。然後再判斷子串性質。最後再擇優。

畫遞迴樹,發現重疊子問題。

構造備忘錄,消除重疊子問題的重複計算。

改寫遞迴為迭代,提公升效率。即將帶備忘錄的遞迴過程 改寫為 迭代形式的動態規劃過程。

明確備忘錄的初始狀態。從base case開始推。

明確狀態轉移的方法(遞推式)。

遞推填表。這裡涉及到二維狀態表的遍歷方式。

leecode 5(求回文字串)

方法一 中心擴充套件法 動態規劃 方法二 manacher 演算法 法一 include include include include typedef struct node node 中心擴充套件法 動態規劃 node getreturnsize char s,int center pre,in...

LeeCode 5 最長回文字串(自己的演算法)

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 思路 我的第一想法是要遍歷給定字串,不要從第乙個字元開始遍歷,從第二個字元開始,這個寫程式的時候方便一...

LeeCode筆記 5 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 使用動態規劃,dp i j 是從j到i的子串是否是回文串 值為true或false dp i i 肯定...