- 买卖股票的最佳时机 iv
给定一个整数数组prices,其中prices[i]是给定股票第i天的价格,以及一个整数k。
找到你能获得的最大利润。您最多可以完成k次交易:即您最多可以买入k次,最多可以卖出k次。
注意:您不能同时进行多项交易(即您必须先卖出股票才能再次购买)。
示例1:
输入:k = 2,价格 = [2,4,1]
输出:2
说明:第 1 天买入(价格 = 2),第 2 天卖出(价格 = 4),利润 = 4-2 = 2。
示例2:
输入:k = 2,价格 = [3,2,6,5,0,3]
输出:7
解释:第 2 天买入(价格 = 2)并在第 3 天卖出(价格 = 6),利润 = 6-2 = 4。然后在第 5 天买入(价格 = 0)并在第 6 天卖出(价格 = 3) ,利润=3-0=3.
限制:
1
1
0
原始页面
public int maxprofit(int k, int[] prices) {
/**[0][0] do nothing in day 0
[0][1] own the stock for 1st time in day 0
[0][2] not own the stock for 1st time in day 0
[0][3] own the stock for 2nd time in day 0
[0][4] not own the stock for 2nd time in day 0
....
[0][k*2-1] own the stock for kth time in day 0
[0][k*2] not own the stock for kth time in day 0
[1][1] = max([0][1],[0][0]-prices[1])
[1][2] = max([0][2],[0][1]+prices[1])
[1][3] = max([0][3],[0][2]-prices[1])
[i][j] if j is odd means we need to pay for the stock or keep the own status
if j is even means we can sell the stock or keep the non-stock status
*/
int[][] dp = new int[prices.length+1][k*2+1];
for(int i=1; i
309. 买卖股票的最佳时机(有冷却时间)
给你一个数组价格,其中prices[i]是给定股票在第i天的价格。
找到你能获得的最大利润。您可以根据需要完成任意多次交易(即多次买入一股股票并卖出一股股票),但有以下限制:
卖出股票后,第二天(即冷却一天)将无法再购买股票。
注意:您不能同时进行多项交易(即您必须先卖出股票才能再次购买)。
示例1:
输入:价格 = [1,2,3,0,2]
输出:3
说明:交易 = [买入、卖出、冷却、买入、卖出]
示例2:
输入:价格 = [1]
输出:0
限制:
1 0
public int maxprofit(int[] prices) { /** [0] own the stock [1] colldown [2] not own the stock */ int[][] dp = new int[prices.length][3]; dp[0][0] = -prices[0]; for(int i=1; i请注意,当冷却期时,我们无法购买新股票。
在此回归关系中,它显示 dp[2] 是我们更新的最后一个,以便我们可以继续覆盖冷却条件。
714. 买卖股票并收取交易费的最佳时机
给你一个价格数组,其中prices[i]是给定股票第i天的价格,以及代表交易费用的整数费用。
找到你能获得的最大利润。您可以完成任意数量的交易,但您需要为每笔交易支付交易费用。
注意:
您不得同时进行多项交易(即,您必须先卖出股票才能再次购买)。
每次买卖股票只收取一次交易费。示例1:
输入:价格 = [1,3,2,8,4,9],费用 = 2
输出:8
说明:最大利润可以通过以下方式实现:
- 以价格[0] = 1 购买
- 以价格[3] = 8 出售
- 以价格[4] = 4 购买
- 以价格[5] = 9 出售 总利润为 ((8 - 1) - 2) + ((9 - 4) - 2) = 8。 示例2:
输入:价格 = [1,3,7,5,10,3],费用 = 3
输出:6限制:
1 1 0 原始页面
我们唯一应该考虑的就是增加交易费,但是费用并不会改变我们之前的逻辑
public int maxProfit(int[] prices, int fee) { int[] dp = new int[2]; int temp = 0; dp[0] = -prices[0]; for(int i=1; i登录后复制以上就是LeetCode Day 动态规划第 9 部分的详细内容,更多请关注php中文网其它相关文章!
91资源网站长-冰晨2024-08-27 17:15
发表在:【账号直充】爱奇艺黄金VIP会员『1个月』官方直充丨立即到账丨24小时全天秒单!不错不错,价格比官方便宜
91资源网站长-冰晨2024-08-27 16:15
发表在:2022零基础Java入门视频课程不错,学习一下