LeetCode--买卖股票的最佳时机Ⅲ--动态规划

一、题目解析

LeetCode--买卖股票的最佳时机Ⅲ--动态规划_第1张图片

二、算法原理

 这道题跟另外的几道股票问题分析方式相似,区别主要就在于该题规定我们最多可以完成两笔交易,那么我们就可以定义二维数组f[][],g[][]。f[i][j]表示在第i天后我们手中持有股票且交易次数为j时的最大利润,g[i][j]表示在第i天后我们手中不持有股票且交易次数为j时的最大利润。

据题意我们可以画出以下状态机:

LeetCode--买卖股票的最佳时机Ⅲ--动态规划_第2张图片

值得注意的是我们的纵坐标是从0开始的所以填表过程中可能越界,需要添加判断语句来防止越界。由于题目中所说最多交易两次,所以我们获得最大利润交易了0,1,2次都有可能,所以最后的返回值是g[n-1]这一行的最大值。

三、代码解析

LeetCode--买卖股票的最佳时机Ⅲ--动态规划_第3张图片 

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