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

婚纱网站开发的必要性如何跟进psd做网站

婚纱网站开发的必要性,如何跟进psd做网站,企业公章查询系统,数字媒体ui设计是做什么的121. 买卖股票的最佳时机 参考文章#xff1a;代码随想录 贪心 因为股票就买卖一次#xff0c;那么贪心的想法很自然就是取最左最小值#xff0c;取最右最大值#xff0c;那么得到的差值就是最大利润。 本次重点学习动态规划方法 1. dp数组#xff08;dp table#x…121. 买卖股票的最佳时机 参考文章代码随想录 贪心 因为股票就买卖一次那么贪心的想法很自然就是取最左最小值取最右最大值那么得到的差值就是最大利润。 本次重点学习动态规划方法 1. dp数组dp table以及下标的含义 dp[i][0] 表示第i天持有股票所得最多现金一开始现金为负数所以第一天就持有股票的话就是为负 dp[i][1] 表示第i天不持有股票所得最多现金 如果按照买入卖出来分别状态那什么都不干的状态并不能涵盖 所以应该按照持有和不持有来区分 持有包含今天买入和之前买入但是这几天一直没变动 不持有包含今天卖出和之前卖出之后没变动 这两种状态能够涵盖所有情况 2. 递推公式 如果第i天持有股票即dp[i][0] 那么可以由两个状态推出来 第i-1天就持有股票那么就保持现状所得现金就是昨天持有股票的所得现金 即dp[i - 1][0]第i天买入股票所得现金就是买入今天的股票后所得现金即-prices[i] 那么dp[i][0]应该选所得现金最大的所以dp[i][0] max(dp[i - 1][0], -prices[i]); 如果第i天不持有股票即dp[i][1] 也可以由两个状态推出来 第i-1天就不持有股票那么就保持现状所得现金就是昨天不持有股票的所得现金 即dp[i - 1][1]第i天卖出股票所得现金就是按照今天股票价格卖出后所得现金即prices[i] dp[i - 1][0] 同样dp[i][1]取最大的dp[i][1] max(dp[i - 1][1], prices[i] dp[i - 1][0]); 3.初始化 由递推公式 dp[i][0] max(dp[i - 1][0], -prices[i]); 和 dp[i][1] max(dp[i - 1][1], prices[i] dp[i - 1][0]);可以看出 其基础都是要从dp[0][0]和dp[0][1]推导出来而且在递推过程中只参考前一位所以有压缩的可能性 那么dp[0][0]表示第0天持有股票此时的持有股票就一定是买入股票了因为不可能有前一天推出来所以dp[0][0] - prices[0]; dp[0][1]表示第0天不持有股票不持有股票那么现金就是0所以dp[0][1] 0; 4.根据递推公式dp[i]都是由dp[i - 1]推导出来的那么一定是从前向后遍历 // 解法1 class Solution {public int maxProfit(int[] prices) {if (prices null || prices.length 0) return 0;int length prices.length;// dp[i][0]代表第i天持有股票的最大收益// dp[i][1]代表第i天不持有股票的最大收益int[][] dp new int[length][2];int result 0;dp[0][0] -prices[0];dp[0][1] 0;for (int i 1; i length; i) {dp[i][0] Math.max(dp[i - 1][0], -prices[i]);dp[i][1] Math.max(dp[i - 1][0] prices[i], dp[i - 1][1]);}return dp[length - 1][1];} }优化由于递推公式更新时只需要参考前一位的数值所以我们可以将空间压缩为2滚动更新数组 class Solution {public int maxProfit(int[] prices) {int len prices.length;int dp[][] new int[2][2];dp[0][0] - prices[0];dp[0][1] 0;for (int i 1; i len; i){dp[i % 2][0] Math.max(dp[(i - 1) % 2][0], - prices[i]);dp[i % 2][1] Math.max(dp[(i - 1) % 2][1], prices[i] dp[(i - 1) % 2][0]);}return dp[(len - 1) % 2][1];} } 122.买卖股票的最佳时机II 与上题区别可以买卖多次股票但是只能持有一个 只有递归公式有区别 如果第i天持有股票即dp[i][0] 那么可以由两个状态推出来 第i-1天就持有股票那么就保持现状所得现金就是昨天持有股票的所得现金 即dp[i - 1][0]第i天买入股票所得现金就是前一天不持有股票的现金再减去买入今天的股票后花费的现金即的 dp[i-1][1]-prices[i] 其他均与上题相同 class Solution { public:int maxProfit(vectorint prices) {int len prices.size();vectorvectorint dp(len, vectorint(2, 0));dp[0][0] - prices[0];dp[0][1] 0;for (int i 1; i len; i) {dp[i][0] max(dp[i - 1][0], dp[i - 1][1] - prices[i]); // 注意这里是和121. 买卖股票的最佳时机唯一不同的地方。dp[i][1] max(dp[i - 1][1], dp[i - 1][0] prices[i]);}return dp[len - 1][1];} }; 由于只需要用到dp[i-1][0],dp[i-1][1]来推导dp[i][0],dp[i][1] 我们可以把dp数组压缩到 2x2的数组滚动更新 // 版本二 class Solution { public:int maxProfit(vectorint prices) {int len prices.size();vectorvectorint dp(2, vectorint(2)); // 注意这里只开辟了一个2 * 2大小的二维数组dp[0][0] - prices[0];dp[0][1] 0;for (int i 1; i len; i) {dp[i % 2][0] max(dp[(i - 1) % 2][0], dp[(i - 1) % 2][1] - prices[i]);dp[i % 2][1] max(dp[(i - 1) % 2][1], prices[i] dp[(i - 1) % 2][0]);}return dp[(len - 1) % 2][1];} }; 本题也可以用贪心方法 // 贪心思路 class Solution {public int maxProfit(int[] prices) {int result 0;for (int i 1; i prices.length; i) {result Math.max(prices[i] - prices[i - 1], 0);}return result;}}
http://www.zqtcl.cn/news/137668/

相关文章:

  • 网站设计包含哪些技术外行怎么做网站
  • 网站建设运营知识推广软文平台
  • 营销型网站建设用途网站 文件夹结构
  • 制作网站建设策划方案cosy主题wordpress
  • 网站建设服务联享科技net和cn哪个做网站好
  • 深圳网站制作公司哪家好艺考培训学校
  • 潍坊网站的公司电话html网站开发基础
  • 网站模板样式做地图特效的网站
  • 商标查询官方网站有没有免费找客户的软件
  • 网站开发及服务合同行业网站名称
  • 网站建设费包括什么建筑设计领域
  • 网站建设 信科网络建行网站会员注册用户名
  • 网站建设的什么是开发实施注意什么网站开发实用技术pdf
  • 网站设计的资质叫什么贵阳网站建设咨询
  • 郑州哪家公司做网站怎么做自己的销售网站
  • 北大青鸟教网站开发吗中国电信 网站备案
  • 网站目录结构图wordpress ftp连接不上
  • 使用php做的网站有哪些网站备案密码重置申请表
  • php网站开发好找工作吗一叶子电子商务网站建设策划书
  • 运营好还是网站开发好购买域名后怎样建公司官网
  • 优秀设计网站推荐晋江市住房和城乡建设局网站
  • 杭州市区网站制作单位青海公路建设服务网站
  • 大型门户网站建设美丽杭州房价
  • 素材下载解析接口网站开发网站关键词热度
  • 山东seo推广网站建设新乡手机网站建设官网
  • 网站定制公司报价wordpress清新模板下载
  • 斗鱼网站开发是用什么语言东莞人才网智通
  • 淘宝上网站建设为啥这么便宜自己如何建设个网站
  • 做网站判多少年滦南网站建设
  • 网站开发难不难学做网站会提供源代码吗