nodejs做后端的网站,中国工业互联网公司排名,网站建设开发网站案例项目费用,怎样做一个企业网站714. 买卖股票的最佳时机含手续费 - 力扣#xff08;LeetCode#xff09;
给定一个整数数组 prices#xff0c;其中 prices[i]表示第 i 天的股票价格 #xff1b;整数 fee 代表了交易股票的手续费用。
你可以无限次地完成交易#xff0c;但是你每笔交易都需要付手续费。…714. 买卖股票的最佳时机含手续费 - 力扣LeetCode
给定一个整数数组 prices其中 prices[i]表示第 i 天的股票价格 整数 fee 代表了交易股票的手续费用。
你可以无限次地完成交易但是你每笔交易都需要付手续费。如果你已经购买了一个股票在卖出它之前你就不能再继续购买股票了。
返回获得利润的最大值。
注意这里的一笔交易指买入持有并卖出股票的整个过程每笔交易你只需要为支付一次手续费。 示例 1
输入prices [1, 3, 2, 8, 4, 9], fee 2
输出8
解释能够达到的最大利润:
在此处买入 prices[0] 1
在此处卖出 prices[3] 8
在此处买入 prices[4] 4
在此处卖出 prices[5] 9
总利润: ((8 - 1) - 2) ((9 - 4) - 2) 8
示例 2
输入prices [1,3,7,5,10,3], fee 3
输出6提示
1 prices.length 5 * 1041 prices[i] 5 * 1040 fee 5 * 104
思路
依旧是动态规划的问题那么首先要确认状态转移方程这次相比于之前多了一个手续费只要在每次卖出的时候减去这个手续费就可以了
当我买入股票的时候就是比较之前没有股票时候的状态dp[1]-prices[i]和不买入这只股票(dp[0])的大小;这里在持有股票的时候之所以用dp[1]是因为dp[1]是卖出股票之后的状态也就是这个时候是没有股票在身上的所以用dp[1]来减去买股票时用的钱
当我想卖出股票的时候就是比较持有股票时候dp[0]prices[i]-fee和不卖出股票时候(dp[1])的状态 完整代码 class Solution {public int maxProfit(int[] prices, int fee) {int n prices.length;int []dp new int[2];dp[0] -prices[0];//买入dp[1] 0;//卖出for (int i 1; i prices.length; i) {dp[0] max(dp[1]-prices[i],dp[0]);dp[1] max(dp[0]prices[i]-fee,dp[1]);}return dp[1];}public static int max(int a,int b){return ab?a:b;}}