今日感悟:细节决定成败,一定要尽可能地想到每道题的每一个细节,从而理解清楚一道题。
任务日期:7.17
题目一链接:188. 买卖股票的最佳时机 IV - 力扣(LeetCode)
思路:本题在第三个买卖股票类型上升级为最多可以买卖k次股票。由于**最多**买卖k次的dp数组状态有2 * k + 1个(因为进行零次买卖的状态是零),所以要求我们区分偶数(不持有股票)状态和技术(持有股票)状态的区别从而进行初始化和遍历dp数组。
代码:
class Solution {
public:
int maxProfit(int k, vector<int>& prices) {
int len = prices.size();
vector<vector<int>> dp(len,vector<int>(2 * k + 1,0));//dp[][0]:状态零是不进行操作的最大现金,因此dp数组的值都是零
//初始化dp数组:第零天的奇数状态是持有,偶数状态是不持有
for(int i = 1;i < 2 * k + 1;i += 2)