給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。最直觀的方法就是兩層迴圈,分別找到每乙個數結上公升子串行,再找到其最大值。可以用動態規劃的思路,如果下乙個比之前某乙個大那麼就可能更新以下乙個數結尾的上公升子串行的長度,可以使用陣列來儲存中間的結果。這種方法的時間複雜度是o(n^2)示例:輸入: [10,9,2,5,3,7,101,18]
輸出: 4
解釋: 最長的上公升子串行是 [2,3,7,101],它的長度是 4。
class solution
return out;
}};
下面介紹一種時間複雜度更低的方法:用陣列來近似儲存形成的子串行,如果下乙個數k比子串行末尾的數大就可以直接加到末尾,否則就在序列中比較將第乙個k大的數字替換為k,這樣既可以更新陣列末尾的數以使得陣列長度增加,另外還能更新陣列,我們關注的是子串行長度。
class solution
else
}} }
return stack.size();
}};
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...