非商業,leetcode鏈結附上:
進入正題。
題目:
給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。
示例:
輸入: [10,9,2,5,3,7,101,18]
輸出: 4
解釋: 最長的上公升子串行是 [2,3,7,101],它的長度是 4。
說明:可能會有多種最長上公升子串行的組合,你只需要輸出對應的長度即可。
你演算法的時間複雜度應該為 o(n2) 。
高階: 你能將演算法的時間複雜度降低到 o(n log n) 嗎?
**實現:
//動態規劃//lis : longest increasing subsequence
public int lengthoflis(int nums)
int dp = new int[nums.length];
dp[0] = 1;
int maxans = 1;
for(int i = 1; i < nums.length; i++)
}maxans = math.max(maxans, dp[i]);
}return maxans;
}//時間複雜度o(n^2),空間複雜度o(n)
分析:動態規劃的解法,設定初始值,並找到「動態轉移方程」 dp[i]=max(dp[j])+1,其中0≤j在每次遍歷時記錄當前的lis(最長子序列)的長度。
動態規劃在某些題目的解法效率會比較高,但在本題並不是效率最高的。需要的時間更多。
--end
LeetCode300 最長上公升子串行
給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4解釋 最長的上公升子串行是 2,3,7,101 它的長度是4。說明 題目分析 方法一 動態規劃,用dp i 表示以nums i 結尾的最長上公升子串行。那麼如何求dp i 呢,只要看n...
Leetcode 300 最長上公升子串行
給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4解釋 最長的上公升子串行是 2,3,7,101 它的長度是4。說明 高階 你能將演算法的時間複雜度降低到 o n log n 嗎?解題思路 1.普通演算法 動態規劃。假設陣列的前n個數...
leetcode 300 最長上公升子串行
給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。示例 輸入 10,9,2,5,3,7,101,18 輸出 4解釋 最長的上公升子串行是 2,3,7,101 它的長度是4。說明 高階 你能將演算法的時間複雜度降低到 o n log n 嗎?解法1 動態規劃空間複雜度o n 時間複雜度o n 2...