leetcode 思路 300 最長上公升子串行

2021-10-09 06:40:35 字數 971 閱讀 5081

給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。

示例:輸入: [10,9,2,5,3,7,101,18]

輸出: 4

解釋: 最長的上公升子串行是 [2,3,7,101],它的長度是 4。

說明:

可能會有多種最長上公升子串行的組合,你只需要輸出對應的長度即可。

你演算法的時間複雜度應該為 o(n2) 。

動態規劃思路:

確定狀態,dp[i]0到第i個子序列的最長上公升的長度;

我們先固定右端點(右端點也要慢慢往右移),然後根據右端點,找出左端點到右端點這區間內子串行的最長上公升的長度;

找出狀態轉移方程,首先我們要定義dp[i] = 1,也就是單獨乙個數字也是個上公升的序列,然後如果右端點的值大於左端點的值,那麼他的上公升長度至少是要+1的,也就是

if

(nums[j]

)

其中i是右端點,j是左端點,首先dp[i] = 1我們在上一層已經定義過了,dp[i]至少是1,然後跟我們已經算出來的dp[j]+1進行對比,更新我們的dp[i],再用更新後的dp[i]j+1之後的子串行進行對比

然後對比右端點分別為1、2、3…等的dp的最大值即可

**:

class

solution}}

int res =0;

for(

int i =

0;isize()

;i++

)return res;}}

;

LeetCode 300 最長遞增子串行

300.最長遞增子串行 我們記狀態 dp i dp i dp i 表示以第 i ii 個元素結尾的最長上公升子串行的長度,那麼專一方程就可以定義為 dp i m ax d p j 1 0 j ndnu ms j ms i dp i max dp j 1 0 leq jdp i max dp j 1 ...

LeetCode300 最長遞增子串行

題目鏈結 題目描述 給你乙個整數陣列 nums 找到其中最長嚴格遞增子串行的長度。子串行是由陣列派生而來的序列,刪除 或不刪除 陣列中的元素而不改變其餘元素的順序。例如,3,6,2,7 是陣列 0,3,1,6,2,2,7 的子串行。示例 輸入 nums 10,9,2,5,3,7,101,18 輸出 ...

leetcode 300 最長遞增子串行

思路,動態規劃 狀態含義 dp i 第i個元素所表示的最大的遞增序列長度 轉移方程 第i個是否可以放在第j個後面 1.可以放,dp i max dp i dp j 1 2.不可以放,跳過 遍歷dp找最大 class solution max max max,dp i return max inclu...