給定乙個無序的整數陣列,找到其中最長上公升子串行的長度。
示例:
輸入: [10,9,2,5,3,7,101,18]說明:輸出: 4
解釋: 最長的上公升子串行是 [2,3,7,101],它的長度是 4。
可能會有多種最長上公升子串行的組合,你只需要輸出對應的長度即可。
你演算法的時間複雜度應該為 o(n2) 。
高階: 你能將演算法的時間複雜度降低到 o(n log n) 嗎?
定義d p[
i]
dp[i]
dp[i
]為以num
s[i]
nums[i]
nums[i
]為最後檢測元素的最長上公升子串行的長度。
從小到大計算dpdp
dp陣列的值:
則最大值為max
(dp[
i]),
i=1,
2,…,
nmax(dp[i]),i=1,2,\dots ,n
max(dp
[i])
,i=1
,2,…
,n
class
solution}}
return
*max_element
(dp.
begin()
, dp.
end())
;}};
複雜度分析:
時間複雜度:o(n
2)
o(n^2)
o(n2
)空間複雜度:o(n
)o(n)
o(n)
class
solution
else r = mid -1;
} d[pos +1]
= nums[i];}
}return len;}}
;
複雜度分析:
時間複雜度:o(n
logn)
o(n\log n)
o(nlogn)
空間複雜度:o(n
)o(n)
o(n)
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...