給定乙個非負索引 k,其中 k ≤ 33,返回楊輝三角的第 k 行。
示例:輸入: 3
輸出: [1,3,3,1]
高階:你可以優化你的演算法到 o(k) 空間複雜度嗎?
使用乙個指定行數加一容量的陣列,就是指定行的元素個數。
從第0行開始,把楊輝三角的改行資料放入到這個陣列中。
我們只關心最後一行,所以這個陣列是可以重複利用了,滿足題中要求的o(k) 空間複雜度。
覆蓋的時候遍歷要從後往前遍歷,因為,後一行的第j個數等於前一行的第j個數加第j-1個數之和。如果從前往後會把出現覆蓋的情況。
時間複雜度為o(numrows^2),空間複雜度我們只用了乙個集合,容量為numrows,所以空間複雜度為o(numrows)。
動態規劃入門篇
動態規劃相信大家都知道,動態規劃演算法也是新手在剛接觸演算法設計時很苦惱的問題,有時候覺得難以理解,但是真正理解之後,就會覺得動態規劃其實並沒有想象中那麼難。在上面的數字三角形中尋找一條從頂部到底邊的路徑,使得路徑上所經過的數字之和最大。路徑上的每一步都只能往左下或 右下走。只需要求出這個最大和即可...
狀態壓縮動態規劃入門篇
狀態壓縮動態規劃 動態規劃的狀態有時候比較難,不容易表示出來,需要用一些編碼技術,把狀態壓縮的用簡單的方式表示出來。典型方式 當需要表示乙個集合有哪些元素時,往往利用2進製用乙個整數表示。一般有個資料 n 16 或者 n 32 這個很可能就是狀態dp的標誌,因為我們要用乙個int的二進位制來表示這些...
動態規劃入門 數字三角形
給定乙個由n行數字組成的數字三角形,如下圖所示 從上到下最大的值的總和。這道題在動態規劃裡是入門級的題目,運用到了遞迴。對於這道題共有兩個思路,第一種是從上向下推,第二種是從下向上推。先從第一種分析。我們設這個二維陣列為dp,在推導的時候我們先把遞的公式寫出來,從上向下退的話,zui a i j m...