動態規劃求最長遞增子串行

2021-10-16 15:12:19 字數 501 閱讀 7269

注意「⼦序列」和「⼦串」這兩個名詞的區別,⼦串⼀定是連續的,⽽⼦序列不⼀定是連續的。

思路:dp[i]表示以i結尾的最長上公升子串行的長度。遍歷前面所有的數,對於小於nums[i]的nums[j],都可以有上公升子串行長度:dp[i]=dp[j]+1;取最優的結果:dp[i]=max(dp[i],dp[j]+1)

int

lengthoflis

(vector<

int>

& nums)

}for

(int i=

1;i)return dp[n-1]

;}

看到乙個o(nlogn)的題解,利用了lower_bound函式

int

lengthoflis

(vector<

int>

& nums)

return res.

size()

;}

動態規劃 求最長遞增子串行

題目 給出一段陣列,比如 1,3,5,2,4,6,7,8 得到的最長為1,2,4,6,7,8。思路 利用dp陣列來解決這個問題,dp i 表示0 i之間最長的子串行的長度。dp的求法如果a i a j dp i math.max dp i dp j 1 首先求出dp的 如下 private stat...

動態規劃 最長遞增子串行

給出序列 1 2 3 4 2 5 3 4 a 1 1,a 2 2,a 7 3,a 8 4 求其最長的遞增子串行,以上最長遞增子串行為 1 2 3 4 5 問題細分 初始化條件f 1 1,序列只有1個長度即為1 f 2 a 2 與下標小於2的比較,即a 1 比較,a 2 a 1 因此更新f 2 f 1...

動態規劃 最長遞增子串行

給定乙個無序的整數陣列,找到其中最長上公升子串行的長度 例項 輸入 10,9,2,5,3,7,101,18 輸出 4 解釋 最長的上公升子串行為 2,3,7,101 長度為4說明 可能會有多種最長上公升子串行的和,只需要輸出對應長度即可 演算法的時間複雜度應為o n2 首先,dp陣列的定義如下 dp...