一、题目解析
二、算法原理
这道题跟另外的几道股票问题分析方式相似,区别主要就在于该题规定我们最多可以完成两笔交易,那么我们就可以定义二维数组f[][],g[][]。f[i][j]表示在第i天后我们手中持有股票且交易次数为j时的最大利润,g[i][j]表示在第i天后我们手中不持有股票且交易次数为j时的最大利润。
据题意我们可以画出以下状态机:
值得注意的是我们的纵坐标是从0开始的所以填表过程中可能越界,需要添加判断语句来防止越界。由于题目中所说最多交易两次,所以我们获得最大利润交易了0,1,2次都有可能,所以最后的返回值是g[n-1]这一行的最大值。