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

长沙优化网站获客软件上海最近逮捕人员

长沙优化网站获客软件,上海最近逮捕人员,仙居做网站公司,51网页游戏官网第九章 动态规划part11 123.买卖股票的最佳时机III // 版本一 class Solution {public int maxProfit(int[] prices) {int len prices.length;// 边界判断, 题目中 length > 1, 所以可省去if (prices.length 0) return 0;/** 定义 5 种状态:* 0: 没有操作, 1: 第一次买入…

第九章 动态规划part11

  •  123.买卖股票的最佳时机III  
    // 版本一
    class Solution {public int maxProfit(int[] prices) {int len = prices.length;// 边界判断, 题目中 length >= 1, 所以可省去if (prices.length == 0) return 0;/** 定义 5 种状态:* 0: 没有操作, 1: 第一次买入, 2: 第一次卖出, 3: 第二次买入, 4: 第二次卖出*/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][1] = Math.max(dp[i - 1][1], -prices[i]);dp[i][2] = Math.max(dp[i - 1][2], dp[i - 1][1] + prices[i]);dp[i][3] = Math.max(dp[i - 1][3], dp[i - 1][2] - prices[i]);dp[i][4] = Math.max(dp[i - 1][4], dp[i - 1][3] + prices[i]);}return dp[len - 1][4];}
    }

    思路:于上两个股票买卖问题的区别在于这道题限制了买卖次数,需要定义五种状态:0、1、2、3、4来代表不同的状态。然后使用递推公式对dp数组进行更新。

  •  188.买卖股票的最佳时机IV 
    // 版本一: 三维 dp数组
    class Solution {public int maxProfit(int k, int[] prices) {if (prices.length == 0) return 0;// [天数][交易次数][是否持有股票]int len = prices.length;int[][][] dp = new int[len][k + 1][2];// dp数组初始化// 初始化所有的交易次数是为确保 最后结果是最多 k 次买卖的最大利润for (int i = 0; i <= k; i++) {dp[0][i][1] = -prices[0];}for (int i = 1; i < len; i++) {for (int j = 1; j <= k; j++) {// dp方程, 0表示不持有/卖出, 1表示持有/买入dp[i][j][0] = Math.max(dp[i - 1][j][0], dp[i - 1][j][1] + prices[i]);dp[i][j][1] = Math.max(dp[i - 1][j][1], dp[i - 1][j - 1][0] - prices[i]);}}return dp[len - 1][k][0];}
    }// 版本二: 二维 dp数组
    class Solution {public int maxProfit(int k, int[] prices) {if (prices.length == 0) return 0;// [天数][股票状态]// 股票状态: 奇数表示第 k 次交易持有/买入, 偶数表示第 k 次交易不持有/卖出, 0 表示没有操作int len = prices.length;int[][] dp = new int[len][k*2 + 1];// dp数组的初始化, 与版本一同理for (int i = 1; i < k*2; i += 2) {dp[0][i] = -prices[0];}for (int i = 1; i < len; i++) {for (int j = 0; j < k*2 - 1; 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 + 2], dp[i - 1][j + 1] + prices[i]);}}return dp[len - 1][k*2];}
    }

    思路:该题与上题的区别在于该题是至多能k次,所以二维数组需要2*k+1的维度,1、3、5等奇数代表持有股票,2、4、6等偶数代表不持有股票。然后根据递推公式进行遍历递推。再进行dp数组的初始化。

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

相关文章:

  • 用xmind做网站架构wordpress静态化好处
  • 流程图 网站建立网站的作用
  • 石家庄专业建站公司网络文化经营许可证申请
  • 做推广哪个网站好模拟网站平台怎么做
  • 设计好的单位网站开发文化建设应先于经济发展
  • 创建一个网站的英文湖南网站建设怎么样
  • php网站数据迁移wordpress主题演示站点
  • 广东营销式网站秦皇岛吧贴吧
  • 网站建设成交话术装修网名
  • 心理咨询网站建设论文小程序需要多少钱
  • 怎么提交网站网站中查看熊掌号怎么做的
  • 最新网站网站建设企业宣传册
  • 宁波专业品牌网站制作外包wordpress删去RSS
  • 东莞网站建设 拉伸膜浙江省特种作业人员证书查询
  • php网站设计wordpress调用数据库连接
  • dedecms建手机网站流程太原seo网站优化
  • 专业的购物网站建设创建一个网站的最常用的方法是先建立一个文件夹
  • 网站打开的速度慢可视化课题组网站建设教程
  • 深圳免费建站哪里有贷款平台推广代理
  • 上海网站哪个比较好佛山网站建设玲念建站
  • 广西网站建设电话有什么网站可以免费看电影
  • 在网上做兼职美工有哪些网站南昌专业网站建设
  • 网站备案需先做网站吗中铁三局招聘信息2023
  • 南昌网站seo厂家wordpress vue主题
  • 用树莓派做网站服务器速度快吗做网站定制的一般什么价位
  • 专做皮鞋销售网站深圳网站设计合理刻
  • 怎么做自己的视频网站中国建筑网官网测评
  • 重庆做网站的程序员待遇企业门户网站模式
  • 电话销售怎么做 网站福州网站建设策划方案
  • 重构网站google网站提交入口