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

接口网站建设劳务派遣技术支持 东莞网站建设

接口网站建设,劳务派遣技术支持 东莞网站建设,宽带营销策略,wordpress 文章 移除侧边栏文章目录前言一、买卖股票的最佳时机III#xff08;力扣123#xff09;二、买卖股票的最佳时机IV#xff08;力扣188#xff09;三、最佳买卖股票时机含冷冻期#xff08;力扣309#xff09;四、买卖股票的最佳时机含手续费#xff08;力扣714#xff09;股票买卖问题总… 文章目录前言一、买卖股票的最佳时机III力扣123二、买卖股票的最佳时机IV力扣188三、最佳买卖股票时机含冷冻期力扣309四、买卖股票的最佳时机含手续费力扣714股票买卖问题总结前言 1、买卖股票的最佳时机III 2、买卖股票的最佳时机IV 3、最佳买卖股票时机含冷冻期 4、买卖股票的最佳时机含手续费 一、买卖股票的最佳时机III力扣123 给定一个数组它的第 i 个元素是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。 注意你不能同时参与多笔交易你必须在再次购买前出售掉之前的股票。 8888 分析 与之前的区别在于最多可以买卖两次 动规五部曲 1、dp[]数组以及下标含义 dp[i][0]不操作 dp[i][1]第一次持有 dp[i][2]第一次不持有 dp[i][3]第二次持有 dp[i][4]第二次不持有 2、递推公式 dp[i][0] dp[i-1][0] dp[i][1] Math.max(dp[i-1][1],-price[i]) dp[i][2] Math.max(dp[i-1][2],dp[i-1][1]price[i]) dp[i][3] Math.max(dp[i-1][3],dp[i-1][2]-price[i]) dp[i][4] Math.max(dp[i-1][4],dp[i-1][3]price[i]) 3、初始化 dp[0][0] 0; dp[0][1] -price[0]; dp[0][2] 0; dp[0][3] -price[0]; dp[0][4] 0; 4、遍历顺序 从前向后遍历因为dp[i]依靠dp[i - 1]的数值。 二维dp数组 class Solution {public int maxProfit(int[] prices) {int[][] dp new int[prices.length][5];dp[0][0] 0;dp[0][1] -prices[0];dp[0][2] 0;dp[0][3] -prices[0];dp[0][4] 0;for(int i1;iprices.length;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[prices.length-1][4];} }优化版滚动数组 class Solution {public int maxProfit(int[] prices) {int[] dp new int[5];dp[0] 0;dp[1] -prices[0];dp[2] 0;dp[3] -prices[0];dp[4] 0;for(int i1;iprices.length;i){dp[1] Math.max(dp[1],-prices[i]);dp[2] Math.max(dp[2],dp[1]prices[i]);dp[3] Math.max(dp[3],dp[2]-prices[i]);dp[4] Math.max(dp[4],dp[3]prices[i]);}return dp[4];} }二、买卖股票的最佳时机IV力扣188 给定一个整数数组 prices 它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。 注意你不能同时参与多笔交易你必须在再次购买前出售掉之前的股票。 分析 与之前的区别在于最多可以买卖k次 根据上一题所表现出来的规律 1、dp[]数组以及下标含义 dp[i][0]不操作 dp[i][1]第一次持有 dp[i][2]第一次不持有 dp[i][3]第二次持有 dp[i][4]第二次不持有 …… 当有k次买卖时奇数表示买入偶数表示卖出。 初始化 for(int j0;j2*k1;j){if(j%21){dp[0][j] -prices[0];} }递推公式 dp[i][0] dp[i-1][0] dp[i][1] Math.max(dp[i-1][1],-price[i]) dp[i][2] Math.max(dp[i-1][2],dp[i-1][1]price[i]) dp[i][3] Math.max(dp[i-1][3],dp[i-1][2]-price[i]) dp[i][4] Math.max(dp[i-1][4],dp[i-1][3]price[i]) for(int i 1; iprices.length; i){for(int j1; j2*k1;jj2){dp[i][j] Math.max(dp[i-1][j],dp[i-1][j-1]-prices[i]);dp[i][j1] Math.max(dp[i-1][j1],dp[i-1][j]prices[i]);} }class Solution {public int maxProfit(int k, int[] prices) {int[][] dp new int[prices.length][2*k1];for(int j1;j2*k1;j){if(j%21) dp[0][j] -prices[0];}for(int i1;iprices.length;i){for(int j0;j2*k-1;jj2){dp[i][j1] Math.max(dp[i-1][j1],dp[i-1][j]-prices[i]);dp[i][j2] Math.max(dp[i-1][j2],dp[i-1][j1]prices[i]);}}return dp[prices.length-1][2*k];} }三、最佳买卖股票时机含冷冻期力扣309 给定一个整数数组其中第 i 个元素代表了第 i 天的股票价格 。 设计一个算法计算出最大利润。在满足以下约束条件下你可以尽可能地完成更多的交易多次买卖一支股票: 你不能同时参与多笔交易你必须在再次购买前出售掉之前的股票。 卖出股票后你无法在第二天买入股票 (即冷冻期为 1 天)。 动规五部曲 1、dp[]数组以及下标含义 dp[i][0]持有股票的状态 dp[i][1]保持卖出股票的状态 dp[i][2]卖出股票状态 dp[i][3]冷冻期 为什么要把 不持有股票状态拆分为两个部分【保持卖出股票的状态、卖出股票状态】因为有冷冻期。必须前一天是卖出股票的状态那么下一天才能是冷冻期 2、递推公式 持有股票状态 1、i-1天就持有dp[i][0] dp[i-1][0]; 2、冷冻期之后买入股票dp[i][0] dp[i-1][3] - prices[i]; 3、冷冻期之后一直没有操作一直都是保持卖出股票状态直到第i天买入dp[i][0] dp[i-1][1] - prices[i]; 因此dp[i][0] Math.max(dp[i-1][0], dp[i-1][3] - prices[i], dp[i][0] dp[i-1][1] - prices[i]) 保持卖出股票状态 1、前一天就是保持卖出股票的状态dp[i][1] dp[i-1][1]; 2、前一天是冷冻期dp[i][1] dp[i-1][3] 因此dp[i][1] Math.max(dp[i-1][1] , dp[i-1][3]) 卖出股票状态 1、前i-1天持有股票状态第i天卖出股票.dp[i][2] dp[i-1][0]prices[i]; 因此dp[i][2]dp[i-1][0]prices[i]; 冷冻期状态 1、前一天卖出股票状态第i天就是冷冻期 dp[i][3] dp[i-1][2] 因此dp[i][3] dp[i-1][2]; 3、初始化 dp[0][0] -prices[0]; dp[0][1] 在dp[i][0] Math.max(dp[i-1][0], dp[i-1][3] - prices[i], dp[i][0] dp[i-1][1] - prices[i]) 这个状态下会用到假设i1带入之后 dp[1][0] max(dp[0][0],dp[0][3]-prices[1], dp[0][1]-prices[1]); dp[0][1] 0; dp[0][2] 0; dp[0][3] 0; 4、遍历顺序 从前向后遍历因为dp[i]依靠dp[i - 1]的数值。 class Solution {public int maxProfit(int[] prices) {int[][] dp new int[prices.length][4];//初始化dp[0][0] -prices[0];dp[0][1] 0;dp[0][2] 0;dp[0][3] 0;//遍历for(int i1;iprices.length;i){//持有股票的状态dp[i][0] Math.max(Math.max(dp[i-1][0],dp[i-1][1]-prices[i]),dp[i-1][3]-prices[i]);//保持卖出股票的状态dp[i][1] Math.max(dp[i-1][1],dp[i-1][3]);//卖出股票状态dp[i][2] dp[i-1][0]prices[i];//冷冻期dp[i][3] dp[i-1][2];}return Math.max(Math.max(dp[prices.length-1][3],dp[prices.length-1][2]),dp[prices.length-1][1]);} }四、买卖股票的最佳时机含手续费力扣714 给定一个整数数组 prices其中 prices[i]表示第 i 天的股票价格 整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易但是你每笔交易都需要付手续费。如果你已经购买了一个股票在卖出它之前你就不能再继续购买股票了。 返回获得利润的最大值。 注意这里的一笔交易指买入持有并卖出股票的整个过程每笔交易你只需要为支付一次手续费。 在之前有用贪心算法进行求解 贪心算法求解 分析 买卖股票的最佳时机II 可以进行多次买卖但多了手续费 dp[i][0]表示第i天持有股票所得现金。 dp[i][1]表示第i天不持有股票所得最多现金 dp[i][0] max(dp[i-1][0],dp[i-1][1]-prices[i]-fee) dp[i][1] max(dp[i-1][1],dp[i-1][0]prices[i]); class Solution {public int maxProfit(int[] prices, int fee) {int[][] dp new int[prices.length][2];dp[0][0] -prices[0]-fee;for(int i1;iprices.length;i){dp[i][0] Math.max(dp[i-1][0],dp[i-1][1]-prices[i]-fee);dp[i][1] Math.max(dp[i-1][1],dp[i-1][0]prices[i]);}return dp[prices.length-1][1];} }优化后一维滚动数组 class Solution {public int maxProfit(int[] prices, int fee) {int[] dp new int[2];dp[0] -prices[0]-fee;for(int i1;iprices.length;i){dp[0] Math.max(dp[0],dp[1]-prices[i]-fee);dp[1] Math.max(dp[1],dp[0]prices[i]);}return dp[1];} }股票买卖问题总结 买卖股票的最佳时机力扣121 只能买卖一次 dp[i][0]:持有股票的状态 dp[i][1]:不持有股票的状态 dp[0][0] -prices[0]; dp[0][1] 0; dp[i][0] max(dp[i-1][0], -prices[i]) dp[i][1] max(dp[i-1][1] , dp[i-1][0]prices[i]) 买卖股票的最佳时机||力扣122可以买卖多次 dp[i][0]:持有股票的状态 dp[i][1]:不持有股票的状态 dp[0][0] -prices[0]; dp[0][1] 0; dp[i][0] max(dp[i-1][0], dp[i-1][1]-prices[i]) dp[i][1] max(dp[i-1][1] , dp[i-1][0]prices[i]) 细微变化在于持有股票状态的递推过程 买卖股票的最佳时机|||力扣123最多买卖2次 dp[i][0] 不操作 dp[i][1]:第一次持有股票状态 dp[i][2]:第一次不持有股票状态 dp[i][3]:第二次持有股票状态 dp[i][4]:第二次不持有股票状态 初始化 dp[0][0] 0 dp[0][1] -prices[0]; dp[0][2] 0; dp[0][3] -prices[0]; dp[i][0] dp[i-1][0] dp[i][1] max(dp[i-1][1],-prices[i]) dp[i][2] max(dp[i-1][2], dp[i-1][1]prices[i]) 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]) 买卖股票的最佳时机IV力扣188 最多买卖k次 dp[i][0] 不操作 dp[i][1]:第一次持有股票状态 dp[i][2]:第一次不持有股票状态 dp[i][3]:第二次持有股票状态 dp[i][4]:第二次不持有股票状态 …… 0 ----- 2*k 奇数是持有股票状态 偶数是卖出股票状态 初始化时 if(j%21) dp[0][j] -prices[0]; 奇数时dp[i][j] max(dp[i-1][j],dp[i-1][j-1] - prices[i]) 偶数时dp[i][j1] max(dp[i-1][j1], dp[i-1][j] prices[i]) 最佳买卖股票时机含冷冻期力扣309 买卖多次卖出后有一天是冷冻期 dp[i][0]:持有股票的状态 dp[i][1]:保持卖出股票的状态 dp[i][2]:卖出股票的状态 dp[i][3]:冷冻期 初始化 dp[0][0] -prices[0]; dp[i][0] max(dp[i-1][0], dp[i-1][1]-prices[i], dp[i-1][3]- prices[i]) dp[i][1] max(dp[i-1][1], dp[]i-1[3]) dp[i][2] dp[i-1][0]prices[i] dp[i][3] dp[i-1][2] 买卖股票的最佳时机含手续费力扣714买卖多次每次都有手续费 dp[i][0]:持有股票的状态 dp[i][1]:不持有股票的状态 dp[0][0] -prices[0]-fee; dp[0][1] 0; dp[i][0] max(dp[i-1][0], dp[i-1][1]-prices[i]-fee) dp[i][1] max(dp[i-1][1] , dp[i-1][0]prices[i]) 细微变化在于多减去手续费
http://www.w-s-a.com/news/201238/

相关文章:

  • 营销型网站的建设重点是什么帝国程序和WordPress
  • 正能量网站推荐不需要下载巴中网站建设开发公司
  • 学生模拟网站开发西安seo平台
  • 免费的app推广平台免费网站seo
  • 建一个个人网站网站建设中小企业广西
  • 优惠券网站做淘客违规吗个人建网站运营.
  • 旅游网站制作建设华大基因 网站建设
  • sem推广竞价托管南京seo网站优化
  • 网站优化网站建站教程网站建设 成都
  • 网站 配色表html代码在线
  • 城乡和建设部建造师网站众筹平台网站建设
  • 外贸网站模板免费下载微网站制作软件
  • 一个新的网站怎么做宣传技术先进的网站建
  • 福建网站建设有限公司需求网站
  • 生物科技企业网站做的比较好的企业培训网站模板
  • 南京 高端网站建设网站备案密码怎么找回
  • 蛋糕店网站模板建设电子商务系统网站
  • 海口网站建设优化公司网站开发要加班吗
  • 建设一个网站需要注意哪些要求群晖的网站开发
  • 精通网站开发阅读网页视频下载慢怎么办
  • 网站标题的选择巴音郭楞库尔勒网站建设
  • 成都市网站建设服务商怎么进网站后台管理系统
  • 企业网站站内优化30岁做网站编辑
  • 与安网站建设网站建设征求意见稿
  • 学校网站推广做网站手把手
  • 网站开发遇到的难题wordpress文章调用
  • 网站建设做的好在线logo免费设计生成器标智客
  • 郑州做网站齿轮网站排名怎么做 site
  • 船员专用网站开发建议wordpress 图片占用id
  • 桌面软件开发跟网站开发那个上海网站备案在哪里查询