動態規劃LeetCode300最長上公升子串行

2022-05-19 07:45:08 字數 1839 閱讀 6050

在做這道題之前,我們先看一下什麼是子串行。

區分子串和子串行:

給定"pwwkew" ,

子串是pww,wwk等很多個子串 是連在一起的

子串行是 pwk,pke等很多個子序列 ,但是子串行中的字元在字串中不一定是連在一起的。

題目描述:

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

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

輸出: 4

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

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

你演算法的時間複雜度應該為o(n^2)

高階: 你能將演算法的時間複雜度降低到o(n*log n)嗎?

思路:dp[i]代表以第i個元素結尾的最長上公升子串行的長度。

1

class

solution

6int dp=new

int[nums.length];

7 dp[0]=1;

8int lis=1;

9for (int i=0; i) 15}

16if (dp[i]>lis) 19}

20return

lis;21}

22 }

上面這個演算法的時間複雜度為o(n^2)。

待會補充一下o(n*log n)的解法,這個解法是利用棧和二分查詢,大家先思考一下。

給定"pwwkew" ,

子串是pww,wwk等很多個子串 是連在一起的

子串行是 pwk,pke等很多個子序列 ,但是子串行中的字元在字串中不一定是連在一起的。

題目描述:

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

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

輸出: 4

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

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

你演算法的時間複雜度應該為o(n^2)

高階: 你能將演算法的時間複雜度降低到o(n*log n)嗎?

思路:dp[i]代表以第i個元素結尾的最長上公升子串行的長度。

1

class

solution

6int dp=new

int[nums.length];

7 dp[0]=1;

8int lis=1;

9for (int i=0; i) 15}

16if (dp[i]>lis) 19}

20return

lis;21}

22 }

上面這個演算法的時間複雜度為o(n^2)。

待會補充一下o(n*log n)的解法,這個解法是利用棧和二分查詢,大家先思考一下。

leetcode 300 最長遞增子串行 動態規劃

300 最長遞增子串行 想弄明白動態規劃建議看大佬的筆記 演算法書籍分享 class solution intlengthoflis vector int nums int res dp 0 for int i 1 i i res max res,dp i return res 大大的重點,核心的東...

LeetCode300 最長上公升子串行(動態規劃)

1 給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。2 說明 1.可能會有多種最長上公升子串行的組合,只需要輸出對應的長度即可。2.演算法的時間複雜度應該為 o n2 最長上公升子串行 動態規劃 自底向上 param nums return public intlengthoflis int...

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