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

2022-08-22 09:51:12 字數 771 閱讀 1410

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

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

輸出: 4

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

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

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

原題跳轉鏈結

還是一道動態規劃問題,我的思路和官方的思路基本一樣,定義 dp[i] 為考慮前i個元素,以第 i個數字結尾的最長上公升子串行的長度。每次從nums裡新取出乙個數,去更新dp,更新方法也很簡單,依次去和已經從nums取出的元素進行大小比較,如果大於nums[i],則db[i] + 1,此處要注意的是,在每次更新db時要和當前db的值比較,保留較大的值。最後返回db裡面最大的值。

完整**如下:

int max(int a, int b)

int lengthoflis(int* nums, int numssize)

int db[numssize];

memset(&db, 0, sizeof(db));

db[0] = 1;

for(int i = 1; i < numssize; ++i)else}}

int max = db[0];

for (int i = 0; i < numssize; i++)

} return max;

}

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

描述乙個數的序列 bi,當 b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它的一些上公升子串行,如 1,7 3,4,8 等等。...

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

描述 乙個數的序列bi,當b1 b2 bs的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1,a2,an 我們可以得到一些上公升的子串行 ai1,ai2,aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它的一些上公升子串行,如 1,7 3,4,8 等等。這...

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

乙個數的序列 bi 當 b1 b2 bs 的時候,我們稱這個序列是上公升的。對於給定的乙個序列 a1 a2 an 我們可以得到一些上公升的子串行 ai1 ai2 aik 這裡1 i1 i2 ik n。比如,對於序列 1,7,3,5,9,4,8 有它的一些上公升子串行,如 1,7 3,4,8 等等。這...