代码随想录 Day41 动态规划09 LeetCode T121 买卖股票的最佳时机 T122 买卖股票的最佳时机II
前言
这两题看起来是不是有点眼熟,其实我们在贪心章节就已经写过了这两道题,当时我们用的是将利润分解,使得我们始终得到的是最大利润
假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。
相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。
这样就是每天得到的最大利润 ,下面我也会给出贪心的思路
LeetCode T121 买卖股票的最佳时机
题目链接:121. 买卖股票的最佳时机 - 力扣(LeetCode)

题目思路:
我们还是用动规五部曲来解决问题
1.确定动规数组含义
这里我们定义两种状态,
1.dp[i][0] 表示持有股票的状态
2.dp[i][1]表示不持有股票的状态
所以此时的dp[i][0]和dp[i][1]都是持有股票时的最大钱数和不持有的最大钱数
注:这里的持有和不持有股票不是指当天买入股票,也可能是之前延续下来的一种状态
2.确定递推公式
这里持有股票可能是前面延续下来的一种状态也可能是当时购买股票的一个状态,我们取最大值即可
dp[i][0] = Math.max(dp[i-1][0],-prices[i])
同样下面也是一样我们讨论没有持有股票的最大值
dp[i][1] = Math.max(dp[i-1][1],dp[i-1][0]+prices[i])
3.初始化dp数组
由递推公式可知只要初始化第一个即可
dp[i][0] = -prices[0]
dp[i][1] = 0
4.确定遍历方式
顺序遍历,因为后一个结果的产生取决于前一个结果
5.打印dp数组排错
题目代码:
//贪心
class Solution {public int maxProfit(int[] prices) {// 找到一个最小的购入点int low = Integer.MAX_VALUE;// res不断更新,直到数组循环完毕int res = 0;for(int i = 0; i < prices.length; i++){low = Math.min(prices[i], low);res = Math.max(prices[i] - low, res);}return res;}
}//动规
class Solution {public int maxProfit(int[] prices) {if(prices.length<=1){return 0;}int[][] dp = new int[prices.length][2];dp[0][0] = -prices[0];dp[0][1] = 0;for(int i = 1;i<prices.length;i++){dp[i][0] = Math.max(dp[i-1][0],-prices[i]);dp[i][1] = Math.max(dp[i-1][1],dp[i-1][0]+prices[i]);}int result = Math.max(dp[prices.length-1][0],dp[prices.length-1][1]);return result;}
}
LeetCode T122 买卖股票的最佳时机 II
题目链接:122. 买卖股票的最佳时机 II - 力扣(LeetCode)

题目思路:
这道题和之前的区别就是买卖股票的次数不仅仅是一次了,所以我们需要将持有股票的状态修改一下,其余代码均不变
dp[i][0] = Math.max(dp[i-1][0],dp[i-1][1]-price[i])这是因为之前只能购买一次,所以不持有股票的状态的钱数一定是0,这里就不一样了,可以购买多次.
题目代码:
//贪心
class Solution {public int maxProfit(int[] prices) {int maxP = 0;for(int i = 0;i<prices.length-1;i++){maxP += Math.max(prices[i+1] - prices[i],0);}return maxP;}
}//动规
class Solution {public int maxProfit(int[] prices) {if(prices.length<=1){return 0;}int[][] dp = new int[prices.length][2];dp[0][0] = -prices[0];dp[0][1] = 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]);}int result = Math.max(dp[prices.length-1][0],dp[prices.length-1][1]);return result;}
}
相关文章:
代码随想录 Day41 动态规划09 LeetCode T121 买卖股票的最佳时机 T122 买卖股票的最佳时机II
前言 这两题看起来是不是有点眼熟,其实我们在贪心章节就已经写过了这两道题,当时我们用的是将利润分解,使得我们始终得到的是最大利润 假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (pri…...
ubuntu18-recvfrom接收不到广播报文异常分析
目录 前言 一、UDP广播接收程序 二、异常原因分析 总结 前言 在ubuntu18.04系统中,编写udp接收程序发现接收不到广播报文,使用抓包工具tcpdump可以抓取到广播报文,在此对该现象分析解析如下文所示。 一、UDP广播接收程序 UDP广播接收程序如…...
漏刻有时百度地图API实战开发(6)多个标注覆盖层级导致不能响应点击的问题
漏刻有时百度地图API实战开发(1)华为手机无法使用addEventListener click 的兼容解决方案漏刻有时百度地图API实战开发(2)文本标签显示和隐藏的切换开关漏刻有时百度地图API实战开发(3)自动获取地图多边形中心点坐标漏刻有时百度地图API实战开发(4)显示指定区域在移动端异常的解…...
使用Net2FTP轻松打造免费的Web文件管理器并公网远程访问
文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一,特别是智能设备的大面积使用,无论是个人…...
MySQL的表格去重,史上最简便的算法,一看就会
首先,表格my_tab02存在很多重复的数据: #表格的去重 方法一: 详细内容传送门:表格的去重 -- 思路: -- 1.先创建一张临时表 my_tmp,该表的结构和my_tab02一样 -- 2.把my_tmp的记录通过distinct关键字 处理后 把记录复…...
this是指向的哪个全局变量,改变this指向的方法有几种?
在JavaScript中,this关键字指向当前执行上下文中的对象。它的具体指向取决于函数的调用方式。 改变this指向的方法有四种: 1.使用call()方法:call()方法在调用函数时将指定的对象作为参数传递进去,从而改变函数的this指向。用法示…...
电脑msvcp110.dll丢失怎么办,msvcp110.dll缺失的详细修复步骤
在现代科技发展的时代,电脑已经成为我们生活和工作中不可或缺的工具。然而,由于各种原因,电脑可能会出现一些问题,其中之一就是msvcp110.dll文件丢失。这个问题可能会导致一些应用程序无法正常运行,给我们的生活和工作…...
cookie 里面都包含什么属性?
结论先行: Cookie 中除了名称和值外,还有几个比较常见的,例如: Domain 域:指定了 cookie 可以发送到哪些域,只有发送到指定域或其子域的请求才会携带该cookie; Path 路径:指定哪些…...
LinuxMySql
结构化查询语言 DDL(数据定义语言) 删除数据库drop database DbName; 创建数据库create database DbName; 使用数据库use DbName; 查看创建数据库语句以及字符编码show create database 43th; 修改数据库属性(字符编码改为gbk)…...
《微服务架构设计模式》之三:微服务架构中的进程通信
概述 交互方式 客户端和服务端交互方式可以从两个维度来分: 维度1:一对一和多对多 一对一:每个客户端请求由一个实例来处理。 一对多:每个客户端请求由多个实例来处理。维度2:同步和异步 同步模式:客户端…...
μC/OS-II---内核:任务调度
目录 内核:调度(oc_core.c文件的函数)OS_TCB(任务控制块)初始化任务控制块列表(ucos_ii.h文件的函数)系统调用,主动让渡CPU发生中断,强制当前任务让渡CPU就绪表(ucos_ii.h文件的函数)设置任务进…...
小程序发成绩
在这个数字化快速发展的时代,让学生能够方便快捷地获取自己的成绩已经成为一项基本的需求。那么,如何实现这一目标呢?对于许多老师来说,可能首先想到的是使用各种代码或者Excel来发布成绩查询。今天,我们就来探讨一下这…...
tensorflow内存泄漏或模型只加载不运行
使用tf2模型进行推理的过程中,发现模型的内存占用在逐步增加,甚至会因为OOM被kill掉进程,有时候模型只加载不运行,搜索得到很多五花八门的答案,有些认为是tf2本身的问题,但在使用内存追踪的时候发现&#x…...
npm和yarn的一些命令
文章目录 前言 前言 提示:生命并不短暂,短暂的是人。 --阿多尼斯 yarn config set registry https://registry.npmjs.org --globalnpm install -g cnpm --registryhttps://registry.npm.taobao.org # 切换淘宝源: yarn config set registry…...
Linux开发工具之自动化构建工具-make/Makefile
文章目录 1.make/Makefile的介绍2.简单编写及使用3.ACM时间4.extern的复习5.多文件的编译5.0复习翻译过程5.1多文件的构成5.2手动编译5.3利用Makefile 1.make/Makefile的介绍 make是一个命令 makefile是一个文件[makefile也对] 之前的学习都没有维护项目结构 当有多个.c文件 先…...
UE5蓝图接口使用方法
在内容区右键创建蓝图接口 命名自定义(可以用好识别的) 双击打开后关闭左边窗口 右键函数 -- 重命名 -- 名称自定义(用好记的) 点击下边输入后面的 号创建一个变量 点击编译并保存 在一个蓝图类里面 -- 点击类设置 在右侧已实现的…...
vue动态修改css样式
<span :style"{backgroundColor:colorHex}">测试文字</span> <button click"changeColor">更改颜色</button>export default{data(){return{colorHex:"#eeeeee",}},methods:{changeColor(){this.colorHex"#000&quo…...
小解List的使用【C++】
小解List的使用【C】 一. List1.1. 与vector的不同1.2 与vector的使用不同1.2.1 迭代器失效1.2.2. insert1.2.3 erase1.2.4 sort1.3. 其他接口 补充迭代器容器与迭代器的关系迭代器的类型 一. List 学习了STL,也已经到了List的内容 因为List与string以及vector比起…...
自动驾驶高效预训练--降低落地成本的新思路(AD-PT)
自动驾驶高效预训练--降低落地成本的新思路 1. 之前的方法2. 主要工作——面向自动驾驶的点云预训练2.1. 数据准备 出发点:通过预训练的方式,可以利用大量无标注数据进一步提升3D检测 https://arxiv.org/pdf/2306.00612.pdf 1. 之前的方法 1.基于对比学…...
Spring笔记(四)(黑马)(web层解决方案-SpringMVC)
01、Spring MVC 简介 1.1 SpringMVC概述 SpringMVC是一个基于Spring开发的MVC轻量级框架,Spring3.0后发布的组件,SpringMVC和Spring可以无 缝整合,使用DispatcherServlet作为前端控制器,且内部提供了处理器映射器、处理器适配器…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
Leetcode33( 搜索旋转排序数组)
题目表述 整数数组 nums 按升序排列,数组中的值 互不相同 。 在传递给函数之前,nums 在预先未知的某个下标 k(0 < k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...
Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...
对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...

