当前位置: 首页 > news >正文

电子商务网站有哪些内容网站建设兆金手指科杰

电子商务网站有哪些内容,网站建设兆金手指科杰,老王搜索引擎入口,sae wordpress 主题题目理解 我们要在给定的股票价格数组 prices 中进行买卖操作,并尽可能多次交易以获取最大利润。每次交易都需要支付一定的手续费 fee,因此我们必须考虑如何通过合适的交易策略最大化利润。 在本题中,每一天可以选择: 不进行任…

题目理解

我们要在给定的股票价格数组 prices 中进行买卖操作,并尽可能多次交易以获取最大利润。每次交易都需要支付一定的手续费 fee,因此我们必须考虑如何通过合适的交易策略最大化利润。

在本题中,每一天可以选择:

  1. 不进行任何操作。
  2. 买入股票。
  3. 卖出股票(前提是已经持有股票)。

题目链接:714. 买卖股票的最佳时机含手续费 - 力扣(LeetCode)

动态规划思路

我们可以使用动态规划(DP)来解决这个问题。在动态规划中,我们定义两种状态:

  1. 持有股票状态(持仓)hold[i] 表示第 i 天结束时持有股票时的最大利润。
  2. 不持有股票状态(空仓)cash[i] 表示第 i 天结束时不持有股票时的最大利润。
状态转移方程
  • 持有股票的状态
    我们有两种可能:

    1. 我们在第 i 天之前已经持有股票,那么 hold[i] 就和 hold[i-1] 相同。
    2. 我们在第 i 天买入股票,那么需要从 cash[i-1](前一天不持有股票的最大利润)中减去 prices[i](当天股票价格)。

      因此,持有股票状态的转移方程为:
      h o l d [ i ] = max ⁡ ( h o l d [ i − 1 ] , c a s h [ i − 1 ] − p r i c e s [ i ] ) hold[i] = \max(hold[i-1], cash[i-1] - prices[i]) hold[i]=max(hold[i1],cash[i1]prices[i])
  • 不持有股票的状态
    我们有两种可能:

    1. 我们在第 i 天之前已经卖出了股票,那么 cash[i] 就和 cash[i-1] 相同。
    2. 我们在第 i 天卖出股票,此时需要加上 prices[i] 的收入并扣除手续费 fee

      因此,不持有股票状态的转移方程为:
      c a s h [ i ] = max ⁡ ( c a s h [ i − 1 ] , h o l d [ i − 1 ] + p r i c e s [ i ] − f e e ) cash[i] = \max(cash[i-1], hold[i-1] + prices[i] - fee) cash[i]=max(cash[i1],hold[i1]+prices[i]fee)
初始状态
  • hold[0] = -prices[0]:第0天如果买入股票,我们的利润就是负的第0天的股票价格。
  • cash[0] = 0:第0天如果不买股票,利润为0。
最终结果

我们最终需要的是在最后一天结束时,不持有股票时的最大利润,即 cash[n-1],其中 nprices 的长度。

C++ 实现

#include <vector>
#include <algorithm>
using namespace std;int maxProfit(vector<int>& prices, int fee) {int n = prices.size();vector<int> hold(n), cash(n);hold[0] = -prices[0]; // 第 0 天持有股票cash[0] = 0;          // 第 0 天不持有股票for (int i = 1; i < n; ++i) {cash[i] = max(cash[i-1], hold[i-1] + prices[i] - fee); // 不持有股票hold[i] = max(hold[i-1], cash[i-1] - prices[i]);       // 持有股票}return cash[n-1];  // 最后一天不持有股票的最大利润
}

优化思路

这个基本解法需要两个数组 holdcash,分别存储持有和不持有股票时的利润值。这会占用 O(n) 的空间。而实际上,在计算第 i 天的状态时,只依赖于 i-1 天的状态,因此我们可以使用两个变量代替数组,优化空间复杂度到 O(1)

优化后的实现

#include <vector>
#include <algorithm>
using namespace std;int maxProfit(vector<int>& prices, int fee) {int n = prices.size();int hold = -prices[0]; // 持有股票时的最大利润int cash = 0;          // 不持有股票时的最大利润for (int i = 1; i < n; ++i) {cash = max(cash, hold + prices[i] - fee); // 更新不持有股票的最大利润hold = max(hold, cash - prices[i]);       // 更新持有股票的最大利润}return cash;  // 最后一天不持有股票的最大利润
}

解释及示例

示例 1

输入:prices = [1, 3, 2, 8, 4, 9], fee = 2
输出:8

过程:

  1. 第 0 天:买入股票,hold = -1cash = 0
  2. 第 1 天:卖出股票,cash = max(0, -1 + 3 - 2) = 0,保持持有状态,hold = -1
  3. 第 2 天:保持持有状态,cash = 0hold = max(-1, 0 - 2) = -1
  4. 第 3 天:卖出股票,cash = max(0, -1 + 8 - 2) = 5hold = max(-1, 5 - 8) = -1
  5. 第 4 天:买入股票,cash = 5hold = max(-1, 5 - 4) = 1
  6. 第 5 天:卖出股票,cash = max(5, 1 + 9 - 2) = 8hold = 1

最终结果:cash = 8

示例 2

输入:prices = [1, 3, 7, 5, 10, 3], fee = 3
输出:6

  1. 第 0 天:买入股票,持有股票的利润为 hold = -1,不持有股票的利润为 cash = 0
  2. 第 1 天:卖出股票后利润为 cash = max(0, -1 + 3 - 3) = 0,持有状态 hold = max(-1, 0 - 3) = -1
  3. 第 2 天:卖出股票后利润为 cash = max(0, -1 + 7 - 3) = 3,持有状态 hold = max(-1, 3 - 7) = -1
  4. 第 3 天:保持不持有状态 cash = max(3, -1 + 5 - 3) = 3,持有状态 hold = max(-1, 3 - 5) = -1
  5. 第 4 天:卖出股票后利润为 cash = max(3, -1 + 10 - 3) = 6,持有状态 hold = max(-1, 6 - 10) = -1
  6. 第 5 天:保持不持有状态 cash = max(6, -1 + 3 - 3) = 6

最终利润为 6。

关键点总结

  1. 最优子结构:第 i 天的状态只取决于第 i-1 天的状态。

  2. 状态转移方程

    • 持有状态:hold[i] = max(hold[i-1], cash[i-1] - prices[i])
    • 不持有状态:cash[i] = max(cash[i-1], hold[i-1] + prices[i] - fee)
  3. 空间优化:我们只需要两个变量 holdcash,可以将空间复杂度从 O(n) 优化到 O(1)

http://www.yayakq.cn/news/222914/

相关文章:

  • 深圳酒店网站建设花都网站建设设计
  • 沙河市建设局网站看到一个电商网站帮做淘宝
  • wix做网站手机乱了网站首页轮播怎么做
  • 企业手机端网站源码下载wordpress 乱码
  • 地方网站系统重庆綦江网站制作公司电话
  • diy科技制作网站网站建设公司税负率
  • 做网站需要用什么系统采购
  • 江西省楚天建设集团有限公司网站钓鱼网站制作
  • 讯杰网站建设星巴克网站建设ppt
  • 好看的网站 你知道的2021网站建设费能不能认定为广告费
  • 企业为啥要做网站建设一个网站的步骤有哪些
  • 网站建设及制作企业开办网站
  • 系部网站建设创新点页面设计合同模板
  • 在线装修设计网站网站优化的链接建设
  • 网站建设公司怎样选怎么注销网站备案
  • 免费psd模板网站eclipse jsp 网站开发
  • 分析可口可乐网站建设的目的百度推广 个人网站
  • 众筹网站开发推广费用一般多少
  • 做网站卖水果哪里进货企业网站设计
  • phpstud可以做几个网站哪些公司做网站开发
  • 电子商务网站建设作业代码下载网站模板怎么使用教程
  • 如何加快百度收录网站建设门户网站的重要性
  • 大庆城乡建设局网站首页东莞注册公司需要什么资料
  • 博山网站建设东莞网站优化关键词推广
  • 网站建设赫伟创意星空科技泸州市建设局网站
  • 做网店装修的网站有哪些内容域名备案掉了网站还可以用
  • 公司网站建设宣传wordpress 媒体模版
  • 天津网站建设推广刚创业 建网站
  • 东莞市网站公司软件开发网站有哪些问题
  • 张家口网站建设费用o2o商城网站系统开发