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

17网站一起做网店怎么样seo关键词快速排名软件

17网站一起做网店怎么样,seo关键词快速排名软件,桂林市临桂区最新疫情,网站制作图片滚动188.买卖股票的最佳时机IV 题目链接:188.买卖股票的最佳时机IV 文档讲解:代码随想录 状态:不会 思路: 在股票买卖1使用一维dp的基础上,升级成二维的即可。 定义dp[k1][2],其中 dp[j][0] 表示第j次交易后持…

188.买卖股票的最佳时机IV

在这里插入图片描述

题目链接:188.买卖股票的最佳时机IV
文档讲解:代码随想录
状态:不会

思路:
在股票买卖1使用一维dp的基础上,升级成二维的即可。

  1. 定义dp[k+1][2],其中 dp[j][0] 表示第j次交易后持有股票的最大利润,dp[j][1] 表示第j次交易后不持有股票的最大利润。
  2. 初始化时,对所有持有股票的情况要变成dp[i][0] = -prices[0];

题解:
要注意: dp[j][0] = Math.max(dp[j][0], dp[j - 1][1] - prices[i]);
dp[j - 1][1] - prices[i] 是因为买入股票的操作要用dp[j-1][1],也就是上次卖出去得到的钱来买这次的股票

    public int maxProfit(int k, int[] prices) {// 特殊情况处理,如果价格数组为空或只有一个元素,返回0if (prices.length == 0) return 0;// dp数组定义为k+1行,2列// dp[j][0] 表示第j次交易后持有股票的最大利润// dp[j][1] 表示第j次交易后不持有股票的最大利润int[][] dp = new int[k + 1][2];// 初始化第1到第k次交易后的持有股票的最大利润为 -prices[0]for (int i = 1; i <= k; i++) {dp[i][0] = -prices[0];}// 遍历每一天的股票价格for (int i = 1; i < prices.length; i++) {// 倒序遍历每一次交易,也可以正序,但是倒序更快一点for (int j = k; j >= 1; j--) {// 更新第j次交易后不持有股票的最大利润dp[j][1] = Math.max(dp[j][1], dp[j][0] + prices[i]);// 更新第j次交易后持有股票的最大利润// dp[j - 1][1] - prices[i] 是因为买入股票的操作要用dp[j-1][1],也就是上次卖出去得到的钱来买这次的股票dp[j][0] = Math.max(dp[j][0], dp[j - 1][1] - prices[i]);}}// 返回最多k次交易后不持有股票的最大利润return dp[k][1];}

309.最佳买卖股票时机含冷冻期

在这里插入图片描述

题目链接:309.最佳买卖股票时机含冷冻期
文档讲解:代码随想录
状态:不会

思路:

第i天的最大收益由持有和不持有股票两种状态推导出来,考虑到由冷冻期,那么第i天持有股票可以考虑跳过昨天,从前天推导。

假设有今天持股情况下的最大收益 dp[i][0]、昨天不持股的最大收益 dp[i−1][0]、昨天持股的最大收益 dp[i−1][0]、前天不持股的最大收益 dp[i−2][1],前天持股的最大收益 dp[i−2][0]。先将目光集中在前天,分别考虑前天持股与不持股的情况,试试能不能推导出今天的最大收益。

对于 dp[i−2][0] 来说,它表示前天结束时手中还有股票,那么如果昨天选择将前天的股票卖掉,由于冷冻期的存在,今天是不能交易的,自然今天手中也不可能还有股票,推导不出 dp[i][0],因此这种情况可以直接忽略;如果前天选择保留股票到昨天,昨天也只能继续保留股票才能让今天手中也有股票,这时 dp[i][0]=dp[i−1][0],这种情况已经在上面的状态转移方程中考虑到了,因此也不用担心。
对于 dp[i−2][1] 来说,它表示前天结束时手中没有股票,如果昨天买入股票,只能是将股票保留到今天才能推出 dp[i][0],这时 dp[i]=dp[i−1][0] 在状态转移方程中已经考虑到了;如果昨天不买入股票,那么由于昨天手中没有股票,只能是今天买入,同时因为昨天没交易,昨天的最大收益和前天相同 dp[i−1][1]=dp[i−2][1],所以这种情况的最大收益是 dp[i−2][1]−prices[i]。

题解:

   public int maxProfit(int[] prices) {int n = prices.length;// 如果价格数组长度为0,直接返回0if (n == 0) {return 0;}// 定义一个二维数组 dp,dp[i][0] 表示第 i 天持有股票的最大利润,// dp[i][1] 表示第 i 天不持有股票的最大利润int[][] dp = new int[n + 1][2];// 初始化第一天的状态dp[1][0] = -prices[0]; // 第一天持有股票,利润为负的当前股票价格// 从第二天开始遍历价格数组for (int i = 2; i <= n; i++) {// 第 i 天持有股票的最大利润,可以选择前一天也持有股票,或者前两天不持有股票,今天买入dp[i][0] = Math.max(dp[i - 1][0], dp[i - 2][1] - prices[i - 1]);// 第 i 天不持有股票的最大利润,可以选择前一天也不持有股票,或者前一天持有股票,今天卖出dp[i][1] = Math.max(dp[i - 1][1], dp[i - 1][0] + prices[i - 1]);}// 返回倒数第二天不持有股票的最大利润return dp[n][1]; // 因为是倒数第二天,所以这里改为 dp[n][1]}

714.买卖股票的最佳时机含手续费

在这里插入图片描述

题目链接:714.买卖股票的最佳时机含手续费
文档讲解:代码随想录
状态:终于做出来一道了。。。。

思路:和股票买卖第2道题一样,不过每次卖出的时候扣除手续费就好了。

题解:

public int maxProfit(int[] prices, int fee) {if (prices.length == 1) {return 0;}int hasStock = -prices[0]; // 第一天买入股票后的收益int noStock = 0; // 第一天不买股票的收益for (int i = 1; i < prices.length; i++) {// 今天选择买入股票或者保持昨天持有股票的状态hasStock = Math.max(hasStock, noStock - prices[i]);// 今天选择卖出股票或者保持昨天没有股票的状态noStock = Math.max(noStock, hasStock + prices[i] - fee);}return noStock; // 最后一天不持有股票的最大收益
}
http://www.khdw.cn/news/33454.html

相关文章:

  • 番禺人才网官网单位招考公司seo
  • 做时时彩网站犯法吗百度推广步骤
  • 使用wordpress的网站草根seo视频大全网站
  • 自己做一个音乐网站怎么做阿里云com域名注册
  • 青岛市黄岛区建设局网站今天最火的新闻头条
  • 网站开发方案书湖南长沙关键词推广电话
  • 怎么投诉网站制作公司广州线上教学
  • 厦门做直销网站公司APP优化大师 win10下载
  • wordpress 4.2.3漏洞女生做sem还是seo
  • 提供营销型网站价格怎么做一个免费的网站
  • 网站建设制作 南京公司哪家好今日关注
  • 做外贸主要看什么网站淘宝推广怎么推
  • 缩短网址生成器七台河网站seo
  • 济南网站建设首推企优互联不错seo技术培训中心
  • wordpress密码错误新手学seo
  • 企业平台app下载手机seo排名软件
  • 亚马逊网站如何做商家排名国际外贸网络交易平台
  • 网站项目团队介绍网络营销好学吗
  • 邢台网站建设包括哪些站长之家0
  • 徐州做企业网站seo搜索排名影响因素主要有
  • 做网站分几个步骤sem竞价开户
  • 网站编程站长工具备案查询
  • 东莞做商城网站建设个人网页模板
  • 2017还有人做网站吗市场调研的内容
  • 松江专业做网站公司手机网站优化排名
  • 网站做短视频业务许可商城小程序
  • 华为云服务器官网入口深圳百度搜索排名优化
  • 网站建设属于资产网站seo优化徐州百度网络
  • 屏蔽阿里云网站吗手机搜索引擎
  • 西安哪里可以做网站营销外包公司