2023-10-03 LeetCode每日一题(买卖股票的最佳时机 III)

2023-10-03每日一题

一、题目编号

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

二、题目链接

点击跳转到题目位置

三、题目描述

给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。

**注意:**你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

示例 1:
2023-10-03 LeetCode每日一题(买卖股票的最佳时机 III)_第1张图片

示例 2:
2023-10-03 LeetCode每日一题(买卖股票的最佳时机 III)_第2张图片

示例 3:
在这里插入图片描述

示例 4:
在这里插入图片描述
提示:

  • 1 <= prices.length <= 105
  • 0 <= prices[i] <= 105

四、解题代码

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int n = prices.size();
        int buy1 = -prices[0], sell1 = 0;
        int buy2 = -prices[0], sell2 = 0;
        for (int i = 1; i < n; ++i) {
            buy1 = max(buy1, -prices[i]);
            sell1 = max(sell1, buy1 + prices[i]);
            buy2 = max(buy2, sell1 - prices[i]);
            sell2 = max(sell2, buy2 + prices[i]);
        }
        return sell2;
    }
};


五、解题思路

(1) 使用动态规划

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)