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

网站建设 十年wordpress 设置网站目录

网站建设 十年,wordpress 设置网站目录,php网站开发是什么,网站流量监控优质博文#xff1a;IT-BLOG-CN 一、题目 给你一个整数数组prices#xff0c;其中prices[i]表示某支股票第i天的价格。在每一天#xff0c;你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买#xff0c;然后在同一天出售。返回你能获得… 优质博文IT-BLOG-CN 一、题目 给你一个整数数组prices其中prices[i]表示某支股票第i天的价格。在每一天你可以决定是否购买和/或出售股票。你在任何时候最多只能持有一股股票。你也可以先购买然后在同一天出售。返回你能获得的最大利润。 示例 1 输入prices [7,1,5,3,6,4] 输出7 解释在第2天股票价格 1的时候买入在第3天股票价格 5的时候卖出, 这笔交易所能获得利润 5 - 1 4。随后在第 4 天股票价格 3的时候买入在第 5 天股票价格 6的时候卖出, 这笔交易所能获得利润 6 - 3 3 。 总利润为 4 3 7 。 示例 2 输入prices [1,2,3,4,5] 输出4 解释在第1天股票价格 1的时候买入在第5天 股票价格 5的时候卖出, 这笔交易所能获得利润 5 - 1 4。总利润为4。 示例 3 输入prices [7,6,4,3,1] 输出0 解释在这种情况下, 交易无法获得正利润所以不参与交易可以获得最大利润最大利润为0。 1 prices.length 3 * 104 0 prices[i] 104 二、代码 【1】动态规划 定义状态dp[i][0]表示第i天交易完后手里没有股票的最大利润dp[i][1]表示第i天交易完后手里持有一支股票的最大利润i从0开始。考虑dp[i][0]的转移方程如果这一天交易完后手里没有股票那么可能的转移状态为前一天已经没有股票即dp[i−1][0]或者前一天结束的时候手里持有一支股票即dp[i−1][1]这时候我们要将其卖出并获得prices[i]的收益。因此为了收益最大化我们列出如下的转移方程dp[i][0]max⁡{dp[i−1][0],dp[i−1][1]prices[i]}再来考虑dp[i][1]按照同样的方式考虑转移状态那么可能的转移状态为前一天已经持有一支股票即dp[i−1][1]或者前一天结束时还没有股票即dp[i−1][0]这时候我们要将其买入并减少prices[i]的收益。可以列出如下的转移方程dp[i][1]max⁡{dp[i−1][1],dp[i−1][0]−prices[i]} 对于初始状态根据状态定义我们可以知道第0天交易结束的时候dp[0][0]0dp[0][1]−prices 因此我们只要从前往后依次计算状态即可。由于全部交易结束后持有股票的收益一定低于不持有股票的收益因此这时候dp[n−1][0]的收益必然是大于dp[n−1][1]的最后的答案即为dp[n−1][0]。 class Solution {public int maxProfit(int[] prices) {if (prices.length 2) {return 0;}// 思路通过二维数组表示当前的两种状态 prices[i][0] 表示持有现金 prices[i][1]表示持有股票每次遍历获取Maxint[][] dp new int[prices.length][2];// 初始化0dp[0][0] 0;dp[0][1] -prices[0];for (int i 1; i prices.length; i) {dp[i][0] Math.max(dp[i-1][0], dp[i-1][1] prices[i]);dp[i][1] Math.max(dp[i-1][1], dp[i-1][0] - prices[i]);}return dp[prices.length - 1][0];} }注意到上面的状态转移方程中每一天的状态只与前一天的状态有关而与更早的状态都无关因此我们不必存储这些无关的状态只需要将dp[i−1][0]和dp[i−1][1]存放在两个变量中通过它们计算出dp[i][0]和dp[i][1]并存回对应的变量以便于第i1天的状态转移即可。 class Solution {public int maxProfit(int[] prices) {int n prices.length;int dp0 0, dp1 -prices[0];for (int i 1; i n; i) {int newDp0 Math.max(dp0, dp1 prices[i]);int newDp1 Math.max(dp1, dp0 - prices[i]);dp0 newDp0;dp1 newDp1;}return dp0;} }时间复杂度 O(n)其中n为数组的长度。一共有2n个状态每次状态转移的时间复杂度为O(1)因此时间复杂度为O(2n)O(n)。 空间复杂度 O(n)我们需要开辟O(n)空间存储动态规划中的所有状态。如果使用空间优化空间复杂度可以优化至O(1)。 【2】贪心 由于股票的购买没有限制因此整个问题等价于寻找x个不相交的区间(li,ri]使得如下的等式最大化∑i1xa[ri]−a[li]其中li表示在第li天买入ri表示在第ri天卖出。同时我们注意到对于(li,ri]这一个区间贡献的价值a[ri]−a[li]其实等价于(li,li1],(li1,li2],…,(ri−1,ri]这若干个区间长度为1的区间的价值和即a[ri]−a[li](a[ri]−a[ri−1])(a[ri−1]−a[ri−2])…(a[li1]−a[li])因此问题可以简化为找x个长度为1的区间(li,li1]使得∑i1xa[li1]−a[li]价值最大化。 贪心的角度考虑我们每次选择贡献大于0的区间即能使得答案最大化因此最后答案为ans∑i1n−1max⁡{0,a[i]−a[i−1]}其中n为数组的长度。需要说明的是贪心算法只能用于计算最大利润计算的过程并不是实际的交易过程。 考虑题目中的例子[1,2,3,4,5]数组的长度n5由于对所有的1≤in1都有a[i]a[i−1]因此答案为ans∑i1n−1a[i]−a[i−1]4但是实际的交易过程并不是进行4次买入和4次卖出而是在第1天买入第5天卖出。 class Solution {public int maxProfit(int[] prices) {int ans 0;int n prices.length;for (int i 1; i n; i) {ans Math.max(0, prices[i] - prices[i - 1]);}return ans;} }时间复杂度 O(n)其中n为数组的长度。我们只需要遍历一次数组即可。 空间复杂度 O(1)只需要常数空间存放若干变量。
http://www.dnsts.com.cn/news/31320.html

相关文章:

  • 简述阐述网站建设的步骤过程wordpress宠物主题
  • 网站怎么发布到iis上珠海建网站价格
  • 企业网站建设 新闻宣传无限次数视频app软件ios
  • dz比wordpress速度快优化网站的方法有哪些
  • 网站主题和建设自己创建网站容易吗
  • 民制作网站哪家便宜制作网站建设
  • 为什么网站搜索不到wordpress如何试下背景页面广告
  • 建设海外网站网站的建设与规划方案
  • 微网站和微信公共平台的区别贵州做旅游的网站
  • 站长工具域名解析深圳消防公司排行
  • 上海防伪网站建设s.w.g wordpress
  • 在哪个网站做流动补胎的广告好深圳百度推广排名优化
  • asp网站做视频wordpress放谷歌代码
  • 网站关键词优化公司动漫设计软件有哪些
  • 六盘水遵义网站建设怎么做移动微网站建设二维码
  • 石家庄做网站网络公司江阴网站建设
  • 做内容网站阳江问政平台官网入口
  • 企业网站设计与管理系统自贡建设局网站
  • 做英文网站哪里好什么是二级域名网站
  • 巴彦淖尔 网站建设小程序搭建服务公司
  • 吉林省建设网站做网站找哪家好熊掌号
  • 开家网站建设培训口碑营销推广
  • 山东网站建设哪家便宜网站站长统计怎么弄
  • 网站友情链接代码大连网站建设特色
  • 石家庄站布局图农业交易平台网站建设
  • 域名注册局官网苏州网站关键词优化
  • php网站开发专业是做什么的wordpress 头像 插件
  • 厦门手机网站制作能够免费换友链的平台
  • 中天建设集团山西分公司网站文化馆 网站 设计
  • 网站建设ssc源码平台h5制作软件app手机版