代码随想录算法训练营第四十九天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II
文章目录
- 121. 买卖股票的最佳时机
- 122.买卖股票的最佳时机II
121. 买卖股票的最佳时机
为什么定义dp数组为二维数组?
dp数组定义,dp(i)[0] 表示第i天持有股票所得最多现金,dp(i)[1]表示第i天不持有股票的状态(未必当前卖出)
这样定义可以表示所有状态,否则dp[i]表示买入,那还要定义第i天卖出,和剩下两种状态持有和不持有
-
题目链接:代码随想录
-
解题思路:
①dp数组,dp(i)[0]表示第i天持有股票的最大现金,dp(i)[1]表示第i天不持有股票的最大现金
②递推公式 1.第i天
持有
股票,可能第i天没买,最大现金为前一天持有股票的最大状态;有可能第i天买了,而且一定是第一次买
,所以为-price[i]
2.第i天不持有
股票**,可能是第i - 1天就不持有状态顺延;也有可能是正好这一天卖出股票,所以总现金为前一天持有状态 + 今天卖出状态
③初始化:
因为要用到i - 1状态,所以要有第0个元素
④遍历顺序:从前向后,因为后状态依赖前状态 -
推导过程
public int maxProfit(int[] prices) {//dp数组//dp[i][0]表示第i天持有股票的最大现金,dp[i][0]表示第i天不持有股票的最大现金int[][] dp = new int[prices.length][2];//初始化//因为i - 1所以,要有第0个元素dp[0][0] = -prices[0];dp[0][1] = 0;//遍历for (int i = 1; i < prices.length; i++) {//第i天持有股票,可能第i天没买,最大现金为前一天持有股票的最大状态;有可能第i天买了,而且一定是第一次买,所以为-price[i]dp[i][0] = Math.max(dp[i - 1][0], -prices[i]);//第i天不持有股票,可能是第i - 1天就不持有状态顺延;也有可能是正好这一天卖出股票,所以总现金为前一天持有状态 + 今天卖出状态dp[i][1] = Math.max(dp[i - 1][1],dp[i - 1][0] + prices[i]);}//一定是第i天不持有股票现金多,不持有一定现金更多return dp[prices.length - 1][1];
}
122.买卖股票的最佳时机II
本题和上一题唯一的区别在于:
当第i天持有并且第i天买入的情况,不再是单纯的-了,而是要算上前一天不持有的状态,因为可以买卖多次
而第i天不持有的情况和之前状态一样
- 题目链接:代码随想录
public int maxProfit(int[] prices) {//dp数组int[][] dp = new int[prices.length][2];//初始化dp[0][0] = -prices[0];dp[0][1] = 0;//遍历for (int i = 1; i < prices.length; i++) {//第i天持有股票,当第i天买入的时候,不再是单纯的-了,而是要算上前一天不持有的状态,因为可以买卖多次dp[i][0] = Math.max(dp[i - 1][0], dp[i - 1][1] - prices[i]);//第i天不持有股票,状态和只能买卖一次的状态一样dp[i][1] = Math.max(dp[i - 1][1],dp[i - 1][0] + prices[i]);}//一定是第i天不持有股票现金多,不持有一定现金更多return dp[prices.length - 1][1];
}
相关文章:
代码随想录算法训练营第四十九天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II
文章目录 121. 买卖股票的最佳时机122.买卖股票的最佳时机II 121. 买卖股票的最佳时机 为什么定义dp数组为二维数组? dp数组定义,dp(i)[0] 表示第i天持有股票所得最多现金,dp(i)[1]表示第i天不持有股票的状态(未必当前卖出&#x…...
零基础如何学习挖漏洞?看这篇就够了【网络安全】
前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小…...
Twitter 推荐算法底有多牛? 已斩获11.7K star
点击上方“Github中文社区”,关注 看Github,每天提升第070期分享 ,作者:Huber | Github中文社区 大家好,我是Huber。 在美国当地时间 3 月 31 日,马斯克履行当初的诺言,他宣布了 Twitter 算法的…...
看过这篇文章,读懂数据分析
一、为什么需要数据分析 数据分析的重要性不言而喻,没有数据,就是感性。数据不会被观点打败,数据只能被数据打败。我们现在妥妥地已经进入了数据时代。 量化IT投资成效,以数据驱动决策 站在公司或者决策者角度,数据最…...
[计算机图形学]光场,颜色与感知(前瞻预习/复习回顾)
一、Light Field / Lumigraph—光场 1.我们看到的是什么 我们的眼睛能够把3D世界转换为2D的成像信号被我们感知,如上面第一幅图,这就是我们看到整个世界的过程,那么如果我们把之前记录的光的信息都完美的放在一个幕布上,那么我们…...
L4公司进军辅助驾驶,放话无图也能跑遍中国
作者 | Amy 编辑 | 德新 高阶智能驾驶走向规模量产,高精地图成为关键的门槛之一。今年,多家车企和智驾公司都喊出「不依赖高精地图,快速大规模落地」的口号。 华为、小鹏、元戎以及毫末等,可能是最快在国内量产 无高精图智…...
【Java笔试强训 17】
🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥杨辉三角…...
【IPv6】基本概念及字段
IPV4知识点: 字段值 IPv4字段共 字段值解释Version版本版本字段,可以区分V4和V6版本,V4是0100,V6是0110,需要注意的是V4和V6头部除了版本字段位置相同外,其他都是不一样的,因此两个协议不能直…...
数据库中的 Schema 变更实现
线上沙龙-技术流第 30 期营业啦 05月09日(周二)19:30 KaiwuDB - B站直播间 传统数据库操作 Schema 变更时,第一步便是锁表,需持续到 Schema 变更操作完成。这样的做法虽然实现简单,无需考虑事务并发带来的影响&#…...
【C++ 学习 ②】- 类和对象(上)
目录 一、 面向对象的基本理念 1.1 - 什么是对象? 1.2 - 类和对象 1.3 - 面向对象的五条原则 1.4 - 面向过程 vs 面向对象 二、C 中的结构体 三、类的定义 3.1 - 类的两种定义方式 3.2 - 成员变量的命名规范 四、类的访问限定符和封装 4.1 - 访问限定符 …...
最好的物联网教程:软硬结合——从零打造物联网
在大学里不同专业有着不同的追求:机械类与强电类专业学生追求的是 “机电合一” ,既懂机械又懂电气,整个电气机械自动化便能打通。弱电类专业学生追求的是 “软硬结合” ,既懂硬件又懂软件,整个电子产品便能打通。我作…...
猫狗训练集训练报错:Failed to find data adapter that can handle input
这里写自定义目录标题 Jupyter Notebook6.5.4 tensorflow 2.12.0 pillow 9.5.0 numpy 1.23.5 keras 2.12.0 报错详细内容: ValueError: Failed to find data adapter that can handle input: (<class ‘tuple’> containing values of types {“<class ‘k…...
中国网络安全人才需求
如果你是一个想要入门网络安全行业的小白、如果你是网络安全专业在读的大学生、如果你是正在找工作的新手,那么这篇文章你一定要仔细看。毕竟知己知彼百战百胜,知道行业的人才需求才能更好得发挥自己的优势。 当你打开BOSS直聘、拉钩等招聘网站…...
设计模式之组合模式
目录 1、组合模式的定义 2、组合模式例子 3、组合模式实现 3.1 组合模式的结构 3.2 组合模式的分类 3.3 组合模式代码实现(透明组合模式) 4、组合模式的优点 5、组合模式使用场景 1、组合模式的定义 组合模式又名部分整体模式,是用于把…...
计算机基础书籍
一操作系统 二常见问题总结 1.操作系统的特征? 并发、共享、虚拟、异步性 2.进程阻塞与唤醒的条件 等待 I/O 操作完成请求系统资源失败等待信号量或事件等待子进程结束被高优先级进程抢占 3.如何避免死锁? 1、避免资源竞争 2、破坏循环等待条件 3、优…...
保龄球游戏的获胜者、找出叠涂元素----2023/4/30
保龄球游戏的获胜者----2023/4/30 给你两个下标从 0 开始的整数数组 player1 和 player2 ,分别表示玩家 1 和玩家 2 击中的瓶数。 保龄球比赛由 n 轮组成,每轮的瓶数恰好为 10 。 假设玩家在第 i 轮中击中 xi 个瓶子。玩家第 i 轮的价值为: …...
jQuery事件
1. jQuery事件注册 单个事件注册 语法: element.事件(function(){}) eg:$(“div”).click(function(){ 事件处理程序 }) 其他事件和原生基本一致。比如mouseover、mouseout、blur、focus、change、keydown、keyup、resize、scroll 等 <!DOCTYP…...
初识SpringCloud
一、软件架构演进 单体架构 垂直架构 分布式架构 SOA架构 微服务架构 二、微服务架构 2.1 微服务理念 "微服务”一词源 于 Martin Fowler的名为 Microservices的博文,可以在他的官方博客上找到http://martinfowler.com/articles/microservices.html微服务是系统架构上…...
安装java配置
目录 安装JDK 编辑 环境变量配置 3、检验环境变量配置 二、安装tomcat 验证Tomcat配置是否成功 三、安装Mysql 一、安装 二、卸载 四、安装Maven 安装JDK 点击更改将C直接给为F即可。 点击确定后进行安装,安装完以后会提示安装JRE; 检测是否已经安装JDK的…...
KBO的选秀会有哪些规定和流程`棒球7号位
KBO(韩国职业棒球联盟)的选秀会有以下规定和流程: 1. 选秀对象:KBO的选秀会主要面向年满18岁及以上的高中和大学生,以及海外球员和自由球员。KBO的球队可以在选秀会中挑选所需的球员,每个球队有一定数量的选…...
男子订民宿被毁约5个家庭漂泊街头 房东:住满了,没办法
据媒体报道,5月1日,一位叫做诸先生的消费者和朋友们提前在平台上预订了五一假期前往青岛金沙滩地中海两天的别墅民宿,并支付了房款9600元。 但是当他们到达目的地前一个半小时联系房东时,却发现联系不上人。到达指定地点后&#x…...
Vue快速入门,常用指令,生命周期
Vue常用指令 案例: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"…...
【热门框架】Mybatis-Plus入门介绍看这一篇文章就足够了
MyBatis-Plus 是在 MyBatis 的基础上进行了封装,提供了更加便捷的开发方式,具有简化开发、提高效率等优点。以下是 MyBatis-Plus 的一些特点和用法: 通用 CRUD 操作:MyBatis-Plus 提供了通用的 CRUD 接口,可以直接调用…...
Node【Node.js 20】新特性
文章目录 🌟前言🌟Node.js 20: 一次重要的升级和改进🌟Internationalization API Update🌟端口管理器🌟字符串处理🌟 更好的调试工具🌟 Crypto模块的更新🌟总结🌟写在最后…...
前端程序员的职业发展规划与路线——ChatGPT的回答
文章目录 一、前端程序员的职业规划是?回答1: 作为一个前端开发程序员,您的职业发展路线可能如下:回答2:作为前端开发程序员,您的职业发展路线可能如下:回答3: 你的职业发展路线可能…...
AlgoC++第八课:手写BP
目录 手写BP前言1. 数据加载2. 前向传播3. 反向传播总结 手写BP 前言 手写AI推出的全新面向AI算法的C课程 Algo C,链接。记录下个人学习笔记,仅供自己参考。 本次课程主要是手写 BP 代码 课程大纲可看下面的思维导图 1. 数据加载 我们首先来实现下MNIST…...
【Java笔试强训 27】
🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥 不用加…...
java紫砂壶交易购物系统 mysql
网络紫砂壶可充通过色彩、图片、说明、设置动画加强了产品了宣传,大大达到了陶瓷业的“色型”要求。实现产品管理方便,起到立竿见影的效果,不用因为更改菜色而重新印刷。只要在后台鼠标轻轻一点,全线马上更新。采用B/S模式&#x…...
7-4 多态练习-计算面积
定义三个类,父类(抽象类)GeometricObject代表几何形状,子类Circle代表圆形,子类Rectangle代表矩形。具体属性和方法如下: 父类 (抽象类)GeometricObject 属性: private String color; private S…...
很佩服的一个Google大佬,离职了。。
这两天,科技圈又有一个突发的爆款新闻相信不少同学都已经看到了。 那就是75岁的计算机科学家Geoffrey Hinton从谷歌离职了,从而引起了科技界的广泛关注和讨论。 而Hinton自己也证实了这一消息。 提到Geoffrey Hinton这个名字,对于一些了解过…...
SOHO英文网站制作/中囯军事网
在Delphi中能实现远程调用的有DCOM或COM,这两种方式实现起来非常的相似。DCOM属于旧版本的远程调用技术,非常实用,所提供的服务保存在应用程序工程中。COM是新版本的远程调用技术,所提供的服务保存在动态库所在的工程中。 一、DCO…...
wordpress命令安装/株洲seo排名
撰文:Tim Beiko编辑:南风以太坊向 PoS 的过渡——合并——即将到来:devnets (开发网络) 正在被建立起来,规范正在被敲定,向社区拓展也已经正式开始。合并被设计为对以太坊终端用户、智能合约和 dapps 的影响最小化。尽…...
专业建设外贸网站制作江门/站长之家ppt模板
-- Start 在上一篇中,我们学会了如何创建节点以及如何保存数据到节点中,那么什么是节点呢?其实节点就像文件一样,是用来保存数据的,只不过在 ZooKeeper 中,我们把它称之为节点。如果有成千上万个节点&…...
中央农村工作会议内容和精神体会/东莞seo优化团队
前两天有个小伙伴在后台留言,最近的面试越来越难了,尤其是技术面,考察得越来越细,越来越底层,庆幸的是最终顺利找到了工作。 一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识 比如果这样的问题…...
网站开发合同履约/天津seo网站管理
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
在深圳学网站设计/chrome浏览器下载安卓手机
工作的原因,本人经常在高速上开车,发现此文很好,特粘贴给经常开车的朋友们!来自一个高速交警的忠告,非常重要强烈推荐随着道路上的私家车越来越多,作为一名高速交警,在日常的事故处理岗位上&…...