阿里 CodeTop 代码随想录 123.买卖股票的最佳时机Ⅲ

发布时间:2026/6/4 3:58:02

阿里 CodeTop 代码随想录 123.买卖股票的最佳时机Ⅲ 思路:这道题是说至多可以买卖两次。也就是说,可以买卖一次,也可以买卖两次,也可以不买卖。动规五部曲:1.确定dp数组及其下标的含义:一天一共可能有五个状态。(1)0:表示没有操作(也可以不设这个状态)。(2)1:表示第1次持有股票。(3)2:表示第1次不持有股票。(4)3:表示第2次持有股票。(5)4:表示第2次不持有股票。dp[i][j]中i表示第i天,j表示[0 - 4]五个状态,dp[i][j]表示第i天状态j所剩的最大现金。注意:dp[i][1]表示的是第i天买入股票的状态,并不一定是要第i天买入股票。例如,dp[i][1]并不一定代表第i天买入的股票,也有可能是第i - 1天就买入了,dp[i][1]延续买入股票的这个状态。2.确定递推公式:(1)达到dp[i][1]的状态,有两个具体的操作:——操作1:第i天买入股票了,那么dp[i][1] = dp[i - 1][0] - prices[i]。——操作2:第i天没有操作,而是沿用前一天买入的状态,即:dp[i][1] = dp[i - 1][1]。dp[i][1]选择两个状态中最大的,即dp[i][1] = max(dp[i - 1][0] - prices[i],dp[i - 1][1])。(2)达到dp[i][2]的状态,也有两个具体的操作:——操作1:第i天卖出股票了,那么dp[i][2] = dp[i

相关新闻