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

文汇智能建站平台展厅设计装修公司

文汇智能建站平台,展厅设计装修公司,宜兴网站制作,网站基础优化随想录日记part40 t i m e #xff1a; time#xff1a; time#xff1a; 2024.04.10 主要内容#xff1a;今天开始要学习动态规划的相关知识了#xff0c;今天的内容主要涉及#xff1a; 买卖股票的最佳时机加强版。 123.买卖股票的最佳时机III 188.买卖股票的最佳时机…随想录日记part40 t i m e time time 2024.04.10 主要内容今天开始要学习动态规划的相关知识了今天的内容主要涉及 买卖股票的最佳时机加强版。 123.买卖股票的最佳时机III 188.买卖股票的最佳时机IV 动态规划五部曲 【1】.确定dp数组以及下标的含义 【2】.确定递推公式 【3】.dp数组如何初始化 【4】.确定遍历顺序 【5】.举例推导dp数组 Topic1买卖股票的最佳时机||| 思路 接下来进行动规五步曲 1.确定dp数组以及下标的含义: 一天一共就有五个状态 0.没有操作 其实我们也可以不设置这个状态1.第一次持有股票2.第一次不持有股票3.第二次持有股票4.第二次不持有股票 dp[i][j]中 i表示第i天j为 [0 - 4] 五个状态dp[i][j]表示第i天状态j所剩最大现金。 需要注意dp[i][1]表示的是第i天买入股票的状态并不是说一定要第i天买入股票这是很多同学容易陷入的误区。例如 dp[i][1] 并不是说 第i天一定买入股票有可能 第 i-1天 就买入了那么 dp[i][1] 延续买入股票的这个状态。 2.确定递推公式: 【达到dp[i][1]有两个操作】 操作一第i天买入股票了那么dp[i][1] dp[i-1][0] - prices[i] 操作二第i天没有操作而是沿用前一天买入的状态即dp[i][1] dp[i - 1][1] 那么dp[i][1]究竟选 dp[i-1][0] - prices[i]还是dp[i - 1][1]呢 一定是选最大的所以 dp[i][1] max(dp[i-1][0] - prices[i], dp[i - 1][1]); 【dp[i][2]也有两个操作】 操作一第i天卖出股票了那么dp[i][2] dp[i - 1][1] prices[i] 操作二第i天没有操作沿用前一天卖出股票的状态即dp[i][2] dp[i - 1][2] 所以dp[i][2] max(dp[i - 1][1] prices[i], dp[i - 1][2]) 同理可推出剩下状态部分 dp[i][3] max(dp[i - 1][3], dp[i - 1][2] - prices[i]); dp[i][4] max(dp[i - 1][4], dp[i - 1][3] prices[i]); 3.dp数组如何初始化 dp数组如何初始化 第0天没有操作这个最容易想到就是0即dp[0][0] 0; 第0天做第一次买入的操作dp[0][1] -prices[0]; 第0天做第一次卖出的操作这个初始值应该是多少呢 此时还没有买入怎么就卖出呢 其实大家可以理解当天买入当天卖出所以dp[0][2] 0; 第0天第二次买入操作初始值应该是多少呢应该不少同学疑惑第一次还没买入呢怎么初始化第二次买入呢 第二次买入依赖于第一次卖出的状态其实相当于第0天第一次买入了第一次卖出了然后再买入一次第二次买入那么现在手头上没有现金只要买入现金就做相应的减少。 所以第二次买入操作初始化为dp[0][3] -prices[0]; 同理第二次卖出初始化dp[0][4] 0; 4.确定遍历顺序 从递归公式其实已经可以看出一定是从前向后遍历因为dp[i]依靠dp[i - 1]的数值。 5.举例推导dp数组 以输入[1,2,3,4,5]为例 代码如下 class Solution {class Solution {public int maxProfit(int[] prices) {// 定义dpint len prices.length;int[][] dp new int[len][5];// 初始化dp[0][1] -prices[0];dp[0][3] -prices[0];// 状态转移for (int i 1; i len; i) {dp[i][0] dp[i - 1][0];dp[i][1] Math.max(dp[i - 1][1], dp[i - 1][0] - prices[i]);dp[i][2] Math.max(dp[i - 1][1] prices[i], dp[i - 1][2]);dp[i][3] Math.max(dp[i - 1][3], dp[i - 1][2] - prices[i]);dp[i][4] Math.max(dp[i - 1][3] prices[i], dp[i - 1][4]);}return dp[len - 1][4];} } 时间复杂度 O ( n ) O(n) O(n) 空间复杂度 O ( n ∗ 5 ) O(n*5) O(n∗5) Topic2买卖股票的最佳时机IV 题目 思路 参考上一题 class Solution {public int maxProfit(int k, int[] prices) {// 定义dpint len prices.length;int[][] dp new int[len][2 * k 1];// 初始化for (int i 1; i 2 * k 1; i i 2) {dp[0][i] -prices[0];}for (int i 1; i len; i) {for (int j 0; j 2 * k - 1; j j 2) {dp[i][j 1] Math.max(dp[i - 1][j 1], dp[i - 1][j] - prices[i]);dp[i][j 2] Math.max(dp[i - 1][j 1] prices[i], dp[i - 1][j 2]);}}return dp[len - 1][2 * k];} }时间复杂度 O ( n ∗ k ) O(n*k) O(n∗k) 空间复杂度 O ( n ∗ k ) O(n*k) O(n∗k)
http://www.w-s-a.com/news/955461/

相关文章:

  • 建设购物网站流程图怎么找网站
  • 阿里云部署多个网站制作小程序网站源码
  • 博罗东莞网站建设网站免费源代码
  • 网站规划与设计范文桂平网站建设
  • 网站备案号密码wordpress邮箱发送信息错误
  • 模板的网站都有哪些关键词搜索工具爱站网
  • 鲜花网站建设的利息分析企业网站建设方案书
  • 深圳网站平台石家庄做商城网站的公司
  • 微网站营销是什么私人订制网站有哪些
  • 浙江建设工程合同备案网站新手做网站教程
  • 网站优化关键词排名自己怎么做wordpress安装主题失败
  • 成都建设银行招聘网站网站的切换语言都是怎么做的
  • 网站网业设计wordpress 很差
  • 网站开发软件著作权归谁网站悬浮窗广告
  • 如何提升网站alexa排名货运网站源码
  • 如何看自己网站流量梧州网站设计理念
  • 商城网站建设特点有哪些信息门户
  • 弄一个网站临沂有哪几家做网站的
  • 广州个人网站制作公司网站建设公司价
  • 免费建设网站赚钱小程序开发文档pdf
  • ucenter 整合两个数据库网站网店推广技巧
  • 网站优化排名提升百度wap
  • 八里河风景区网站建设内容摘要网站开发基础学习
  • 上海做外贸网站的公司智慧团建网站登陆平台
  • 上海商务网站建设如何做的网站手机可以用吗
  • 产品推广营销方案seo推广员招聘
  • 做水利网站需要多少钱山东市网站建设
  • 做网站找哪里如何修改wordpress颜色
  • 招商加盟网站系统站长工具 seo查询
  • 工商局网站清算组备案怎么做电商培训机构