首页 > 其他分享 >Leetcode - 动态规划总结(必看!!!)

Leetcode - 动态规划总结(必看!!!)

时间:2023-07-12 16:56:36浏览次数:49  
标签:总结 状态 动作 必看 -- 股票 问题 变化 Leetcode

 

一、labuladong动态规划模板思路

wiki:https://labuladong.gitee.io/algo/di-ling-zh-bfe1b/dong-tai-g-1e688/

题目:

 

动态规划模板思路:

 

二、我自己如何理解【状态】【选择】

 

以714题目《最佳时机去买卖股票+手续费》为例子:

1.确定 【状态】 -- 寻找原问题和子问题中,变化的“结果”变量(而不是一个选择/动作)

原问题:第N天,股票账户的最大利润

子问题:第N-1天,股票账户的最大利润

其中,变化的变量有【天数】,以及从子问题到原问题的【是否持有股票状态】的变化

 

请注意:为何状态是【是否持有股票状态】,而不是【买】【卖】【休息】?

因为买、卖、休息,都是动作(可以理解为二叉树的树枝,是变化的路径)。

动作做完后的静态状态【是否持有股票状态】,才是变化后的结果(可以理解为二叉树的节点,是变化的结果)

 

2.确定【选择】-- 就是每一个子问题能操作的动作(有哪些导致状态变化的行为)

显而易见,就是三个动作:

  • 休息(不操作)

 

 

3.明确dp数组的定义 -- 每个状态都需要呈现一个维度,若有两个状态就需要二维数组

本题中,需要的是:

最后一【天】的【未持有股票状态(因为不操作肯定买要利润大)】的 {最大利润}

  • 【】中的就是状态 
  • {} 中的是dp数组内的值,也是该问题需要的解

 

 

 

标签:总结,状态,动作,必看,--,股票,问题,变化,Leetcode
From: https://www.cnblogs.com/frankcui/p/17547956.html

相关文章

  • 第三周第四天进度总结
    2023年7月11日,今天我Java基础学到了P42-偶数求和,Javaweb学到了P32-CSS的常用样式-布局。英语任务已完成,读物看到96页。由于今天太热了,我下午在游泳馆泡了一个半小时,人比较少,练习了很久都没又外界因素干扰,还是挺舒服的。......
  • 助教工作总结
    一、助教工作的具体职责和任务1.我的职务是由杨雄老师指导之下的2019级毕业设计的助教。2.我的职责是,继续上学期的毕设进度帮助老师、指引同学们完成毕设,具体包括以下几项:整理并且检查抽送检的毕业生名单、参考各专业毕设进度表并编写下发抽检通知、依照送检要求完成并核对所有......
  • 软件工程与计算II-24-考试总结
    summary1.软件工程应用系统的、规范的、可量化的方法来开发、运行和维护软件,即将工程应用到软件。对1)中各种方法的研究。2.五十年代到00年代的特点1950s:科学计算;以机器为中心进行编程;像生产硬件一样生产软件。1960s:业务应用(批量数据处理和事物计算);软件不同于硬件;用软件工艺的......
  • LeetCode 剑指 Offer 11. 旋转数组的最小数字
    题目链接:LeetCode剑指Offer11.旋转数组的最小数字题意:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [......
  • LeetCode 剑指 Offer 12. 矩阵中的路径
    题目链接:LeetCode剑指Offer12.矩阵中的路径题意:给定一个 mxn二维字符网格 board和一个字符串单词 word。如果 word存在于网格中,返回true;否则,返回false。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元......
  • 树状数组学习笔记与总结
    树状数组学习笔记与总结目录树状数组OIWiki信息学奥赛一本通例题单点修改,区间查询区间修改,单点查询区间修改,区间查询树状数组OIWikiOIWiki-树状数组信息学奥赛一本通例题单点修改,区间查询LibreOJ树状数组1:单点修改,区间查询我的代码点击查看代码#include<......
  • LeetCode 234. 回文链表
    classSolution{public:ListNode*reverse(ListNode*head)//翻转以head为头节点的链表{if(!head||!head->next)returnhead;autoa=head,b=head->next;while(b){autoc=b->next;b->next=a;......
  • LeetCode -- 918. 环形子数组的最大和
     遇到环形问题一般有两种考虑方法:1.破环成链2.分为数组中间部分和数组两边部分分别考虑本题采用第二种考虑方法,将原数组分为中间部分和两边部分分别考虑。中间部分即为子数组最大和,两边部分计总和减去中间部分最小和。classSolution{public:intma......
  • LeetCode 热题 100 之 128. 最长连续序列
    题目描述给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n)的算法解决此问题。示例1:输入:nums=[100,4,200,1,3,2]输出:4解释:最长数字连续序列是[1,2,3,4]。它的长度为4。示例2:输入:nums......
  • LeetCode -- 826. 安排工作以达到最大收益
     方法一:二分加枚举通过二分快速查找小于某个难度值的最大价值。classSolution{public:intmaxProfitAssignment(vector<int>&difficulty,vector<int>&profit,vector<int>&worker){constintn=(int)difficulty.size();vector<pai......