LeetCode300 最長遞增子串行

2021-10-21 05:57:38 字數 1008 閱讀 7954

思考:

//定義dp陣列的含義(暫時無法直接確定維數)

//dp[i]表示以num[i]為結尾元素的最長遞增子串行

/* *思考遞推的過程是什麼?知道了dp[0],dp[1],dp[...],dp[i-1],如何遞推dp[i],

以數學歸納法的方式去思考遞推,不要只限定在只知道dp[i]如何求dp[i+1]上

我們以我們人的實際考慮,用乙個例子,來推演

陣列:1 3 5 2 4 3 3 5

dp[0] = [1] dp[1]=2 dp[2]=3i

num= 2,這個時候如何得到dp[3]? 因為dp[i]表示的是以nums[i]結尾的最長遞增子序

dp[3]= 2,具體過程:在下標3(i)之前,尋找比它小的元素,然後其之前的序列和num【i】就組成了新的序列,

但是這樣還不夠,畢竟這樣的序列很多,我們需要取最大值

-------如果我們無法得到遞推,或者思考不出來,我們要回到第一步,思考自己的dp陣列含義是否有誤或者記錄的資訊不夠

*//* 思考了遞推的過程,我們現在思考返回的結果:返回所有的dp【i】中的最大值

*//* 思考邊界條件:

初始情況下,所有的dp[i]=1,畢竟要包括自身

*/

class

solution}}

//返回結果:

時間複雜度o(n2),空間複雜度o(n)。

高階做法(優化時間複雜度為nlog(n)):

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...