当前位置:实例文章 » 其他实例» [文章]代码随想录算法训练营第五十天 | 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV

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

发布人:shili8 发布时间:2025-02-27 06:47 阅读次数:0

**代码随想录算法训练营第五十天**

今天,我们将继续讨论两个经典的问题:《买卖股票的最佳时机III》和《买卖股票的最佳时机IV》。

###问题一:买卖股票的最佳时机III这个问题是这样的:

给定一个数组 `prices`,其中每个元素都是一个整数,代表某只股票在不同时间点的价格。请你写一个函数 `maxProfit`,返回可以获得的最大利润。

**注意**:你可以自由地进行交易,但不能同时持有多只股票。

#### 示例:

* 输入:`prices = [7,1,5,3,6,8]`
输出:`5`

* 输入:`prices = [7,6,4,3,1]`
输出:`0`

#### 思路:

这个问题可以使用动态规划来解决。我们可以维护一个数组 `dp`,其中每个元素代表到当前时间点为止,可以获得的最大利润。

####代码:

def maxProfit(prices):
 n = len(prices)
 dp = [0] * (n +1)

 for i in range(1, n +1):
 # 如果前一天没有股票,今天可以选择买入或不买入 dp[i] = max(dp[i -1], prices[i -1])

 # 如果前一天有股票,今天可以选择卖出或不卖出 if i >1:
 dp[i] = max(dp[i], dp[i -1] + (prices[i -1] - prices[i -2]))

 return dp[n]


###问题二:买卖股票的最佳时机IV这个问题是这样的:

给定一个数组 `prices`,其中每个元素都是一个整数,代表某只股票在不同时间点的价格。请你写一个函数 `maxProfit`,返回可以获得的最大利润。

**注意**:你可以自由地进行交易,但不能同时持有多只股票。

#### 示例:

* 输入:`prices = [1,2,3,4,5]`
输出:`4`

* 输入:`prices = [7,6,4,3,1]`
输出:`0`

#### 思路:

这个问题可以使用动态规划来解决。我们可以维护一个数组 `dp`,其中每个元素代表到当前时间点为止,可以获得的最大利润。

####代码:

def maxProfit(prices):
 n = len(prices)
 dp = [0] * (n +1)

 for i in range(1, n +1):
 # 如果前一天没有股票,今天可以选择买入或不买入 dp[i] = max(dp[i -1], prices[i -1])

 # 如果前一天有股票,今天可以选择卖出或不卖出 if i >1:
 dp[i] = max(dp[i], dp[i -1] + (prices[i -1] - prices[i -2]))

 return dp[n]


### 总结:

在本文中,我们讨论了两个经典的问题:《买卖股票的最佳时机III》和《买卖股票的最佳时机IV》。我们使用动态规划来解决这些问题,并提供了详细的代码示例。

**注意**:以上代码仅供参考,实际应用中可能需要进行调整和优化。

其他信息

其他资源

Top