代码随想录算法训练营第四十九天|123.买卖股票的最佳时机III|188.买卖股票的最佳时机IV

一、123.买卖股票的最佳时机III

思想:这是股票的一个系列,前面有买卖一次,买卖无数次,这道题目是最多可以买卖两次。整体思路是由于最多可以完成两笔买卖,所以我们定义dp的时候需要定义4个分别表示拥有一次,不拥有一次,拥有两次,不拥有两次的状态,然后确定递归公式,思路和前面系列一样。主要的难点在于第一次拿到这题的时候不知道从哪儿下手,对于dp的定义可能不是很清楚,然后dp初始化的时候,在dp[3]的时候可能会犯错。初始化的时候就假设只有一天的股票,买一次是-prices[i],卖出一次是0,买第二次又是-prices[i],卖第二次的时候又是0即可。

代码随想录算法训练营第四十九天|123.买卖股票的最佳时机III|188.买卖股票的最佳时机IV_第1张图片

 二、188.买卖股票的最佳时机IV

思想:这题其实是123.买卖股票的最佳时机III的进阶题,当时我做第三题的时候还想了一下如果是k次怎么办,结果真的出这题了。这题主要思路和上面还是一样的,主要是递归公式和初始化的处理,因为这里是k次了,所以递归公式必须改,而且要包含买卖k的,因为买卖一次会初始化两个,所以k次就是2*k个,然后加上为0的特殊情况,便要创建2*k+1个。然后递归公式用遍历的方法就行了,这里我也是用的j+1来控制拥有,j+2控制不拥有。递归公式用两次的来改就行,然后边界条件,我的处理方法就是选k=2,然后你自己看选的对不对。

代码随想录算法训练营第四十九天|123.买卖股票的最佳时机III|188.买卖股票的最佳时机IV_第2张图片

 

你可能感兴趣的:(动态规划,算法)