使用動態規劃演算法的思想,首先狀態的定義:dp[n]表示以s[n]結尾的最長遞增子串行的長度。
那麼dp[n]的由來就是s[n]之前存在的一條最長遞增子串行的長度+1。所以轉移方程就是:dp[n] = max(dp[i] + 1| s[i] < s[n] && i < n)
。當然,也可能存在s[n]之前沒有遞增子串行,所以dp[n]=1的情況也是可能發生的。
所以,對於序列的每乙個dp來說,初始值應該都是1。(dp[i] = 1 | 1 <=i <=n)
對於整個序列來說,最長遞增子串行不一定是最後乙個字元結尾的,所以我們需要從dp陣列中找出最大值。max(dp[i] | 1 <= i <=n)
LeetCode300 最長上公升子串行
給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4解釋 最長的上公升子串行是 2,3,7,101 它的長度是4。說明 題目分析 方法一 動態規劃,用dp i 表示以nums i 結尾的最長上公升子串行。那麼如何求dp i 呢,只要看n...
Leetcode 300 最長上公升子串行
給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4解釋 最長的上公升子串行是 2,3,7,101 它的長度是4。說明 高階 你能將演算法的時間複雜度降低到 o n log n 嗎?解題思路 1.普通演算法 動態規劃。假設陣列的前n個數...
leetcode 300 最長上公升子串行
給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4解釋 最長的上公升子串行是 2,3,7,101 它的長度是4。說明 高階 你能將演算法的時間複雜度降低到 o n log n 嗎?解法1 動態規劃空間複雜度o n 時間複雜度o n 2...