首頁 > web前端 > js教程 > LeetCode冥想:最長遞增子序列

LeetCode冥想:最長遞增子序列

Linda Hamilton
發布: 2024-12-28 13:47:19
原創
886 人瀏覽過

LeetCode Meditations: Longest Increasing Subsequence

這個問題的描述簡單地說:

給定一個整數數組 nums,傳回最長嚴格遞增子序列.

的長度

例如:

或:

或:


與本系列的上一個問題類似,我們也可以在這裡看看自下而上的動態規劃方法。

對於 nums 陣列中的每個值,我們可以從索引開始的最大子序列的長度

  • 是:
1

(該值本身)

  • 1 從索引開始可以擁有的最大子序列的數量 i 1i 1 1i 1 i 1 i 1

i 1


i 1

i 1

i 1


i 1


1


。 但是,如果 nums[i 1] 小於 nums[i],我們不能包含第二個選項。 首先,我們可以先建立一個 dp 陣列來保存從 nums 的每個索引開始可以擁有的子序列的長度。也就是說,dp[0] 的長度是從 nums[0] 開始的最大子序列的長度,dp[1] 的長度是從 nums[1] 開始的最大子序列的長度,等等於: 然後,我們可以從 nums 的最後一個索引開始向後迭代(因為這是最簡單的位置,只有一種方法可以向前形成子序列,只需取值本身): 對於每個選項,我們可以從下一個索引開始迭代,看看是否可以包含從該索引開始可以形成的最大子序列,如果可以,我們可以得到dp[i] 和1 dp[ 之間的最大值j]: 最後,我們可以回到 dp 中的最大值: 最終的解如下:

時間和空間複雜度

時間複雜度為 O(n2n2222 🎜>)O(n ^2) O(n2
當我們迭代 nums 中的每個項目時,對於 nums 中的每個項目。 空間複雜度為 O(n)n


)

O(n🎜> O(n) 因為我們保留了一個 dp 數組,它的大小會隨著 nums 長度的增加而增加。 這是本系列中的最後一個動態規劃問題。接下來,我們將開始關於間隔的新章節。在那之前,祝您編碼愉快。

以上是LeetCode冥想:最長遞增子序列的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板