刷題86 動態規劃(三)

2021-10-05 12:19:57 字數 881 閱讀 1076

題目鏈結題目描述

給定乙個非負整數 num。對於 0 ≤ i ≤ num 範圍中的每個數字 i ,計算其二進位制數中的 1 的數目並將它們作為陣列返回。

示例 1:

輸入: 2

輸出: [0,1,1]

示例 2:

輸入: 5

輸出: [0,1,1,2,1,2]

高階:題目分析

法一:動態規劃:

找規律:奇數二進位制中1的個數比前乙個數(偶數)二進位制中1的個數加1,原因:奇數總是在低位為1;

偶數二進位制中1的個數和偶數/2二進位制中1的個數相同;

設定dp為當前元素二進位制中1的個數;

狀態轉移方程:奇數:dp[i] = dp[i-1] + 1;偶數:dp[i] = dp[i/2]。

/**

* @param num

* @return

*/var

countbits

=function

(num)

else

}return dp;

};

法二:

/**

* @param num

* @return

*/var

countbits

=function

(num)

let sum =

newarray

(str.length)

.fill(0

);for(

let i=

0; i}return sum;

};

LeetCode刷題 動態規劃(三)

最長公共子串行問題,最基本的問題是在兩個字串中找出最長公共字串。方法是使用雙指標 i,j遍歷兩個字串,建立二維 dp 陣列,通過填表獲得結果。1143,最長公共子串行,medium 583,兩個字串的刪除操作,medium 712,兩個字串的最小ascii刪除和,medium 1143,最長公共子串...

刷題 動態規劃

動態規劃法 動態規劃求解問題的四個特徵 求乙個問題的最優解 整體的問題的最優解是依賴於各個子問題的最優解 小問題之間還有相互重疊的更小的子問題 從上往下分析問題,從下往上求解問題 題目 給你一根長度為n繩子,請把繩子剪成m段 m n都是整數,n 1並且m 1 每段的繩子的長度記為k 0 k 1 k ...

動態規劃刷題總結

資料結構與演算法 41 動態規劃理論 最優子結構 無後效性和重複子問題 zj csdn部落格 乙個模型 多階段決策最優解模型,重點在於多階段,每個階段都對應著不同的狀態 三個特徵 最優子結構,無後效性,重複子問題。主要抓住最優子結構這一特徵,理解為後面的階段狀態可以由前面的階段狀態推導而來。狀態定義...