怎么用百度云做网站空间,asp网站500错误iis7,建设信用卡银行商城网站,浏览器无法访问网页怎么办714. 买卖股票的最佳时机含手续费 原题链接#xff1a;完成情况#xff1a;解题思路#xff1a;ExplanationSummary 参考代码#xff1a;_714买卖股票的最佳时机含手续费 错误经验吸取 原题链接#xff1a;
714. 买卖股票的最佳时机含手续费
https://leetcode.cn/probl… 714. 买卖股票的最佳时机含手续费 原题链接完成情况解题思路ExplanationSummary 参考代码_714买卖股票的最佳时机含手续费 错误经验吸取 原题链接
714. 买卖股票的最佳时机含手续费
https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-with-transaction-fee/description/
完成情况 解题思路
Sure, let’s break down the code and explain it step by step.
The problem is to maximize the profit from buying and selling stocks given that there is a transaction fee each time you sell a stock. You can perform as many transactions as you like, but you must sell the stock before you can buy again.
Explanation Initialization: int n prices.length;
int [][] dp new int[n][2];
dp[0][0] 0;
dp[0][1] -prices[0];n is the length of the prices array.dp is a 2D array where dp[i][0] represents the maximum profit at day i when you don’t have any stock, and dp[i][1] represents the maximum profit at day i when you have one stock.On day 0, if you don’t own a stock, the profit is 0 (dp[0][0] 0).On day 0, if you own a stock, the profit is -prices[0] because you bought the stock at prices[0] (dp[0][1] -prices[0]). DP Transition: for (int i 1; i n; i){dp[i][0] Math.max(dp[i-1][0], dp[i-1][1] prices[i] - fee);dp[i][1] Math.max(dp[i-1][1], dp[i-1][0] - prices[i]);
}For each day i from 1 to n-1, we update the dp array: dp[i][0] can be obtained by either: Doing nothing on day i, hence dp[i][0] dp[i-1][0].Selling the stock on day i, hence dp[i][0] dp[i-1][1] prices[i] - fee (selling the stock gives the price at day i, but we must subtract the transaction fee). dp[i][1] can be obtained by either: Doing nothing on day i, hence dp[i][1] dp[i-1][1].Buying the stock on day i, hence dp[i][1] dp[i-1][0] - prices[i] (we subtract the price at day i from the profit since we are buying the stock). Result: return dp[n-1][0];At the end of the loop, dp[n-1][0] will contain the maximum profit we can achieve on the last day if we don’t own any stock (which is the desired result since we want to end up with no stock to realize the profit).
Summary
The algorithm uses dynamic programming to keep track of the maximum profit for each day, considering both states of holding a stock or not holding a stock.The transition equations consider the profit from both holding and selling a stock, incorporating the transaction fee.Finally, the algorithm returns the maximum profit achievable by the end of the last day when no stock is held.
参考代码
_714买卖股票的最佳时机含手续费
package leetcode板块;public class _714买卖股票的最佳时机含手续费 {/**** param prices* param fee* return*/public int maxProfit(int[] prices, int fee) {// 你可以无限次地完成交易但是你每笔交易都需要付手续费。如果你已经购买了一个股票在卖出它之前你就不能再继续购买股票了。// 返回获得利润的最大值。int n prices.length;int [][] dp new int[n][2];// 0 代表当前股票的空余情况, 1代表当前股票处于抛售的情况dp[0][0] 0;dp[0][1] -prices[0];// TODO 交易的过程中引入卖出时的手续费for (int i 1; i n; i){dp[i][0] Math.max(dp[i-1][0],dp[i-1][1] prices[i] - fee);dp[i][1] Math.max(dp[i-1][1],dp[i-1][0] - prices[i]);}return dp[n-1][0];}
}
错误经验吸取