121.?買賣股票的最佳時機?
給定一個數組 prices ,它的第?i 個元素?prices[i] 表示一支給定股票第 i 天的價格。你只能選擇 某一天 買入這只股票,并選擇在 未來的某一個不同的日子 賣出該股票。設計一個算法來計算你所能獲取的最大利潤。返回你可以從這筆交易中獲取的最大利潤。如果你不能獲取任何利潤,返回 0?
思路:
dp數組:dp[i][0] dp[i][1] 表示第i天持有&不持有股票的最大收益. dp[0] =?[-prices[0], 0]
遞推公式:dp[i][0] = max(dp[i-1][0], -prices[i]), dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0])
遍歷順序:物品在外,背包在內。二維數組,正序遍歷。一維數組,逆序遍歷。
二維數組:
一維數組:
122.買賣股票的最佳時機II?
給定一個數組,它的第?i 個元素是一支給定股票第 i 天的價格。設計一個算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易(多次買賣一支股票)。注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。
思路:
dp數組:dp[i][0] dp[i][1] 表示第i天持有&不持有股票的最大收益. dp[0] =?[-prices[0], 0]
遞推公式:dp[i][0] = max(dp[i-1][0], dp[i-1][1]-prices[i]),?dp[i][1] = max(dp[i - 1][1], prices[i] + dp[i - 1][0])
遍歷順序:物品在外,背包在內。二維數組,正序遍歷。一維數組,無法實現,因為遞推公式中,dp[0] dp[1] 都用到了上一層的dp[0] dp[1]。
二維數組:
以下是卡哥資料
股票問題是一個動態規劃的系列問題,今日安排的題目不多,大家可以慢慢消化。
?121.?買賣股票的最佳時機?
視頻講解:https://www.bilibili.com/video/BV1Xe4y1u77q
?122.買賣股票的最佳時機II??