在做這道題之前,我們先看一下什麼是子串行。
區分子串和子串行:
給定"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上面這個演算法的時間複雜度為o(n^2)。 待會補充一下o(n*log n)的解法,這個解法是利用棧和二分查詢,大家先思考一下。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 }
給定"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上面這個演算法的時間複雜度為o(n^2)。 待會補充一下o(n*log n)的解法,這個解法是利用棧和二分查詢,大家先思考一下。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 }
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 ...