【代码随想录】刷题笔记Day48

前言

  • 早上练车去了(好久没有8点前醒了),练科目二两小时下来脚根可真酸啊,希望下周一把过。练完顺带去Apple西湖免费换新了耳机,羊毛爽!

121. 买卖股票的最佳时机 - 力扣(LeetCode)

  • 贪心法

    • 更新最小值,更新最大区间利润值
    • class Solution {
      public:int maxProfit(vector<int>& prices) {int low = INT_MAX;int result = 0;for (int i = 0; i < prices.size(); i++) {low = min(low, prices[i]);  // 取最左最小价格result = max(result, prices[i] - low); // 直接取最大区间利润}return result;}
      };
  • 动规法(一维)

    • 一维思路和贪心类似,有点难理解
    • dp[i]含义
      • 以prices[i]价格卖出可获得的最大利润
    •  递推公式
      • 情况一:i-1买入,i卖出,收益prices[i] - prices[i-1]
      • 情况二:i-1之前已卖出,如果延迟到i卖出,取更高的收益
      • dp[i] = max(prices[i] - prices[i-1], prices[i] - prices[i-1] + dp[i-1]);
    • 初始化及顺序
      • dp[0] = 0,从前往后
    • 要最高收益,结果取dp[i]的最大值(和其他一维有差别),另外可以优化一下空间
    • // 优化前
      class Solution {
      public:int maxProfit(vector<int>& prices) {int len = prices.size();vector<int> dp(len);int result = 0;for(int i = 1; i < len; i++){dp[i] = max(prices[i] - prices[i - 1], prices[i] - prices[i - 1] + dp[i - 1]);result = max(result, dp[i]);}return result;}
      };// 优化后
      class Solution {
      public:int maxProfit(vector<int>& prices) {int len = prices.size();int dp0 = 0, dp1 = 0;  // 只需要维护滚动两个值int result = 0;for(int i = 1; i < len; i++){dp1 = max(prices[i] - prices[i - 1], prices[i] - prices[i - 1] + dp0);result = max(result, dp1);dp0 = dp1; // 互换}return result;}
      };
      
  • 动规法(二维)

    • 二维用的01双状态,类似打家劫舍III
    • dp数组含义
      • dp[i][0] 表示第i天持有股票所得最多现金:维持现状 + 买入股票
      • dp[i][1] 表示第i天不持有股票所得最多现金:维持现状 + 卖出股票
    • 递推公式
      • 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] = -prices[0];  dp[0][1] = 0;  从前往后
    • 答案取dp[max][1],因为不持有一定比持有多
    • class Solution {
      public:int maxProfit(vector<int>& prices) {int len = prices.size();vector<vector<int>> dp(len, vector<int>(2));dp[0][0] -= prices[0];for(int i = 1; i < len; i++){// 持有:原状 + 买入dp[i][0] = max(dp[i - 1][0], -prices[i]);// 不持有:原状 + 卖出持有dp[i][1] = max(dp[i - 1][1], dp[i - 1][0] + prices[i]);} return dp[len - 1][1];}
      };

后言

  • 先到这(饿了),看评论区尝试了一下一维和改进废了些时间,晚上有空继续刷股票

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/334302.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【信息安全】深度分析邮件安全及钓鱼攻击防范

本博文共计3100余字&#xff0c;预计需阅读20分钟 【邮件安全建设】 一、前言 邮件系统作为企业办公网络架构中重要的组成部分&#xff0c;同时也是业务高频使用的办公应用&#xff0c;一旦出现安全问题&#xff0c;业务将会被严重干扰甚至中断&#xff0c;本篇博客通过攻守两…

为什么选择嬴图?

图数据库、图计算、图中台都是用图论的方式去构造实体间的关联关系&#xff0c;实体用顶点来表达&#xff0c;而实体间的关系用边来表达。图数据库的这种简洁、自由、高维但100%还原世界的数据建模的方式让实体间的关联关系的计算比SQL类的数据库高效成千上万倍。 图&#xff1…

HarmonyOS应用开发者基础认证考试

判断题 1.Ability是系统调度应用的最小单元,是能够完成一个独立功能的组件。一个应用可以包含一个或多个Ability。 正确(True) 2.所有使用Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。 错误(False) 3.每调用一次router.pushUrl()方法,…

vue无法获取dom

处理过程 watch监听值变化 index.js:33 [Vue warn]: Error in callback for watcher "$store.state.modelsStorageUrl": "TypeError: Cannot set properties of undefined (setting modelScene)"watch: {"$store.state.modelsStorageUrl":{ha…

【hcie-cloud】【17】华为云Stack灾备服务介绍【灾备方案概述、备份解决方案介绍】【上】

文章目录 前言灾备方案概述灾备的定义灾备的重要性故障和灾难对业务连续性带来的挑战灾备系统的衡量指标RTO与RPO分析 灾备等级标准数据中心容灾解决方案全景图云灾备服务总结架构华为云Stack灾备服务总览 备份解决方案介绍云备份服务介绍备份服务架构介绍云备份服务组件功能介…

解决spring-session-data-redis包redis的session失效时间设置失败问题

这个属于是本人问题&#xff0c;小脑萎缩了 我使用了 EnableRedisHttpSession 这个注解 经过查询这个注解是需要过期时间的 EnableRedisHttpSession(maxInactiveIntervalInSeconds 3600,redisNamespace "tl") 像这样 可以在参数中设置过期时间&#xff0c;只要你…

Office 365 登录账号报错

Win10 Office 365 登录账号报错 win10登录office365报错 0X80190001错误 输入账号后点击下一步会出现发生了错误 关闭office&#xff0c;然后打开IE浏览器“internet选项”&#xff0c;删除历史记录cookie等信息 打开高级选项卡重置浏览器设置 winR输入services.msc 打…

目标检测-One Stage-YOLOv5

文章目录 前言一、YOLOv5的网络结构和流程YOLOv5的不同版本YOLOv5的流程YOLOv5s的网络结构图 二、YOLOv5的创新点1. 网络结构2. 输入数据处理3. 训练策略 总结 前言 前文目标检测-One Stage-YOLOv4提到YOLOv4主要是基于技巧的集成&#xff0c;对于算法落地具有重大意义&#x…

一种DevOpts的实现方式:基于gitlab的CICD(二)

写在之前 前文已经搭建了基于gitlab的cicd环境&#xff0c;现在我们来更近一步&#xff0c;结合官网给出的案例来详细介绍如何一步一步实现CI的过程。 基于gitlab搭建一个前端静态页面 环境依赖&#xff1a; gitlabgitlab runner&#xff08;docker版本&#xff09; 环境达吉…

Edge无法卸载也无法上网的处理

1、在C盘把Microsoft下的子文件删掉&#xff0c;注意最好用delete删&#xff0c;别右键删&#xff01; 2、删掉用户文件夹下\AppData\Local\Microsoft\Edge\User Data下的所有文件 3、到微软官网下载最新的edge&#xff0c;再安装就可以了: https://www.microsoft.com/zh-cn…

Tomcat源码解析(一): Tomcat整体架构

Tomcat源码系列文章 Tomcat源码解析(一)&#xff1a; Tomcat整体架构 目录 一、Tomcat整体架构1、Tomcat两个核心组件功能2、Tomcat支持的多种I/O模型和应用层协议 二、Connector连接器1、连接器功能汇总2、ProtocolHandler组件2.1、Endpoint2.2、Processor 3、Adapter组件 三…

【unity小技巧】FPS游戏实现相机的偏移震动、武器射击后退和后坐力效果

最终效果 文章目录 最终效果前言相机偏移震动相机震动脚本换弹节点震动 武器射击后退效果武器后坐力效果完结 前言 关于后坐力之前其实已经分享了一个&#xff1a;FPS游戏后坐力制作思路 但是实现起来比较复杂&#xff0c;如果你只是想要简单的实现&#xff0c;可以看看这个&…