企业网站二级域名好做吗,福田皇岗社区做网站,网站被搜索引擎收录,php网站开发示例代码清单
● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费
LeetCode #309 最佳买卖股票时机含冷冻期
1. 题目
给定一个整数数组#xff0c;其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下#xff0c;你可…清单
● 309.最佳买卖股票时机含冷冻期 ● 714.买卖股票的最佳时机含手续费
LeetCode #309 最佳买卖股票时机含冷冻期
1. 题目
给定一个整数数组其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下你可以尽可能地完成更多的交易多次买卖一支股票: 你不能同时参与多笔交易你必须在再次购买前出售掉之前的股票。 卖出股票后你无法在第二天买入股票 (即冷冻期为 1 天)。
2. 思路
dp数组含义: dp[i][j] 为第i天所能获取的最大利润, i 代表天数, j代表交易状态。 存在四种交易状态: 1. 买入 2. 保持卖出 3. 卖出 4. 冷冻期递推公式: 1) 买入: dp[i][0] max(dp[i-1][0], max(dp[i-1][3], dp[i-1][1]) - prices[i]) 2) 保持卖出: dp[i][1] max(dp[i-1][1], dp[i-1][3]) 3) 卖出: dp[i][2] dp[i-1][0] prices[i] 4) 冷冻期: dp[i][3] dp[i-1][2]初始化 dp[0][0] - prices[0]正序遍历
3. 代码实现
class Solution:def maxProfit(self, prices: List[int]) - int:l len(prices)#Initial dpdp [[0] * 4 for _ in range(l)]#Original Settingdp[0][0] - prices[0]for i in range(1, l):dp [i][0] max(dp[i-1][0], max(dp[i-1][3], dp[i-1][1]) - prices[i])dp [i][1] max(dp[i-1][1], dp[i-1][3])dp [i][2] dp[i-1][0] prices[i]dp [i][3] dp[i-1][2]return max(dp[l-1][1], dp[l-1][2], dp[l-1][3])LeetCode #714 买卖股票的最佳时机含手续费
1. 题目
给定一个整数数组 prices其中 prices[i]表示第 i 天的股票价格整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易但是你每笔交易都需要付手续费。如果你已经购买了一个股票在卖出它之前你就不能再继续购买股票了。 返回获得利润的最大值。 注意这里的一笔交易指买入持有并卖出股票的整个过程每笔交易你只需要为支付一次手续费
2. 思路
dp数组含义: dp[i][j] 为第i天所能获取的最大利润, i 代表天数, j代表交易状态。 存在四种交易状态: 1. 买入 2. 卖出递推公式: 1) 买入: dp[i][0] max(dp[i-1][0], dp[i-1][1] - prices[i]) 2) 卖出: dp[i][1] max(dp[i-1][1], dp[i-1][0] prices[i] - fee)初始化 dp[0][0] - prices[0]正序遍历
3. 代码实现
class Solution:def maxProfit(self, prices: List[int], fee: int) - int:l len(prices)#Initial DPdp [[0] * 2 for _ in range(l)]#Original Settingdp[0][0] - prices[0]for i in range(1,l):dp[i][0] max(dp[i-1][0], dp[i-1][1] - prices[i])dp[i][1] max(dp[i-1][1], dp[i-1][0] prices[i] - fee)return max(dp[-1][1], dp[-1][0])