小记录49

108 阅读1分钟

●  121. 买卖股票的最佳时机

dp定义两个状态,当前持有还是不持有股票,因为这个dp是二维的

递推: dp[i][0] = max(dp[i - 1][0], -prices[i]), dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i]

怎么理解transition,实际上可以看到 dp数组的第一维是第i个item,第二维度的每一个元素是由前一个元素推过来的,换而言之第二维度每个元素是相关,依赖的。

dp[i][1] 依赖 dp[i][0]来计算遍历到i的当前的最大收益

122.买卖股票的最佳时机II

dp[i][0]还需要考虑上一次卖出的收益,也就是dp[i - 1][0], 因此递推是 dp[i][0] = max(dp[i - 1][0], dp[i - 1][1] - prices[i])

注意两个题目需要初始化 dp[0], 然后从 i = 1 开始 interate