应用题-动态规划-买卖股票的最佳时机含手续费

管理员
```python class Solution: # 给定一个整数数组 prices,其中 prices[i]表示第 i 天的股票价格; # 整数 fee 代表了交易股票的手续费用。 # 你可以无限次地完成交易,但是你每笔交易都需要付手续费。 # 如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。 # 返回获得利润的最大值。 # 注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。 def maxProfit(self, prices: List[int], fee: int) -> int: n = len( prices ) if n == 0 or n == 1: return 0 # 每天的状态:买入;卖出; # 暴力: 枚举每天状态的所有情况 取所有情况中的最大利润。 # 动态规划优化 # dp[ i ][ 0 ] 第i天不持有股票的最大利润 # dp[ i ][ 1 ] 第i天持有股票的最大利润 dp = [ [ 0, 0 ] for _ in range( n ) ] dp[ 0 ][ 1 ] = -prices[ 0 ] for i in range( 1, n ): dp[ i ][ 0 ] = max( dp[ i - 1 ][ 0 ], dp[ i - 1 ][ 1 ] + prices[ i ] - fee ) dp[ i ][ 1 ] = max( dp[ i - 1 ][ 1 ], dp[ i - 1 ][ 0 ] - prices[ i ] ) return dp[ n - 1 ][ 0 ] ```
评论 0

发表评论 取消回复

Shift+Enter 换行  ·  Enter 发送
还没有评论,来发表第一条吧