【java】力扣 买卖股票的最佳时机 动态规划

news2024/11/9 5:47:11

文章目录

  • 题目链接
  • 题目描述
    • 思路
    • 代码

题目链接

121.买卖股票的最佳时机

题目描述

在这里插入图片描述

思路

本题主要用到了动态规划
1.先定义dp数组的含义
先定义一个二维数组dp
然后dp[i][0]来表示第i天持有股票的现金
dp[i][1]代表第i天不持有股票的现金
刚开始的现金为0,当第i天买入时,现金就成为了-prices[i]
设置成"持有",“持有”不代表是当天买入,有可能是之前买入 而保持持有的状态
2.递归公式
dp[i][0] = max(dp[i-1][0],-prices[i]);
**dp[i-1][0]**表示的是在i-1天就持有股票,一直保持持有的状态
-prices[i] 表示的是当天买入的股票后的现金
同理,
dp[i][1] =max(dp[i-1][1],prices[i]+dp[i-1][0])
**dp[i-1][1]**表示的是第i-1天就不持有股票,然后保持原状,所得现金就是昨天不持有股票的所得现金
prices[i]+dp[i-1][0] 表示的是当天卖出的股票所得的现金
3.初始化
dp[0][0] =-prices[0]
刚开始就买入股票,初始金钱是0,然后买入之后,就成-prices[0]
dp[0][1] = 0 刚开始没有任何操作 初始现金是0;
4.遍历数组
因为dp[i]都是由dp[i-1]推导出来的,所以我们由前向后遍历
分析完毕
上代码

代码

public int maxProfit(int[] prices) {
       //动态规划
       if(prices ==null || prices.length==0){
            return 0;
       }
       int n =prices.length;
       //dp[i][0]表示第i天持有股票
       //dp[i][1]表示第i天不持有股票
       int[][] dp =new int[n][2];
       //初始化
       //刚开始就买入股票,初始金钱是0,然后买入之后,就成-prices[0]
       dp[0][0]=-prices[0];
       dp[0][1] =0;
       //开始遍历数组
       for(int i=1;i<n;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]);
       }
       return dp[n-1][1];
    }

感谢大家的收看!!!
这种类型的其他例题请看
【java】力扣 买卖股票的最佳时机II

【java】力扣 买卖股票的最佳时机III

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql索引值

mysql 索引值生成规则 MySQL索引值是如何生成的取决于具体的数据类型和列的具体定义。对于大多数数据类型&#xff0c;MySQL会为索引键值使用原始的数据。对于字符串类型&#xff08;如VARCHAR, CHAR, TEXT&#xff09;&#xff0c;索引键值可能是字符串的前缀&#xff0c;这是…

二.1 信息存储(1.1-1.3)

大多数计算机使用8位的块&#xff0c;或者字节&#xff08;byte&#xff09;&#xff0c;作为最小的可寻址的内存单位&#xff0c;而不是访问内存中单独的位。机器级程序将内存视为一个非常大的字节数组&#xff0c;称为虚拟内存&#xff08;virtual memory&#xff09;。内存的…

Home Assistant在windows环境安装

Home Assistant是什么&#xff1f; Home Assistant 是一个开源的智能家居平台&#xff0c;旨在通过集成各种智能设备和服务&#xff0c;提供一个统一的、可自定义的家庭自动化解决方案。它可以允许用户监控、控制和自动化家中的各种设备&#xff0c;包括灯光、温度、安全系统、…

C语言学生成绩管理系统源程序+设计报告

资料下载地址&#xff1a;C语言学生成绩管理系统源程序设计报告 目录 1.设计目的与要求 2.系统需求分析 3.总体设计 4、运行界面 5、资料清单 1.设计目的与要求 设计目的&#xff1a;学生成绩管理系统是为了在这个信息时代高速发展的今天&#xff0c;通过计算机取代传统…

Python从0到100(三十九):数据提取之正则(文末免费送书)

前言&#xff1a; 零基础学Python&#xff1a;Python从0到100最新最全教程。 想做这件事情很久了&#xff0c;这次我更新了自己所写过的所有博客&#xff0c;汇集成了Python从0到100&#xff0c;共一百节课&#xff0c;帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

加油机税控装置:功能、原理、挑战与发展趋势全解析

加油机税控装置是现代加油机的重要组成部分&#xff0c;它不仅确保销售数据的真实性和合法性&#xff0c;还大大提高了税收管理的效率和质量。 以下是对加油机税控装置的详细解析&#xff1a; 一、功能与作用 1、确保数据真实性&#xff1a;税控装置能够实时、准确地采集加油…

隧道调频广播信号覆盖系统改造-泄漏电缆隧道全线无盲区调频覆盖解决方法探究

隧道调频广播信号覆盖系统改造-泄漏电缆隧道全线无盲区调频覆盖解决方法探究 由北京海特伟业科技有限公司任洪卓发布于2024年7月15日 随着城市交通的不断发展&#xff0c;隧道作为城市交通的重要组成部分&#xff0c;承担着日益增长的交通压力。为了确保行驶在隧道中的车辆能够…

Unity最新第三方开源插件《Stateful Component》管理中大型项目MonoBehaviour各种序列化字段 ,的高级解决方案

上文提到了UIState, ObjectRefactor等,还提到了远古的NGUI, KBEngine-UI等 这个算是比较新的解决方法吧,但是抽象出来,问题还是这些个问题 所以你就说做游戏是不是先要解决这些问题? 而不是高大上的UiImage,DoozyUI等 Mono管理引用基本用法 ① 添加Stateful Component …

书生大模型实战营--L0关卡-Git

任务一、自我介绍 一、使用vscode链接git并提交代码 二、提交新的pr

Linux目录网络设置远程工具的使用

文章目录 Linux目录虚拟机⽹络配置查看⽹络信息修改⽹络配置信息 虚拟机管理操作远程⼯具的使⽤ Linux目录 Linux的⽬录结构 Linux中的常⻅⽬录 Linux常⻅的⽬录结构&#xff0c;不同版本的Linux⽬录结构可能略有不同 Centos7的⽂件⽬录结构 Linux根⽬录下的常⻅⽬录及作⽤ …

windows下安装和使用nacos

概述 Nacos致力于帮助您发现、配置和管理微服务。Nacos提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发 现、服务配置、服务元数据及流且管理 Nacos官方文档&#xff1a;https://nacos.io/zh-cn/docs/quick-start.html Nacos下载地址&#xff1a;https://n…

ArkUI-X视频播放App初出茅庐

前言; 各位同学大家好之前写了一些基于 OpenHarmony 系统写arkui的项目。所以移植到arkui-x上面来 效果图 OpenHarmony os 设备效果图 : 安卓设备效果图

创建第一个鸿蒙开发项目

文 | Promise Sun 一、DevEco Studio 1、截图示例为汉化后的版本&#xff0c;需要汉化DevEco Studio可以参考《汉化DevEco Studio开发工具》 2、使用DevEco Studio开发工具版本&#xff1a; 二、创建鸿蒙开发项目 1、打开DevEco Studio开发工具&#xff0c;操作“文件-新建…

8.FreeRTOS_队列集

队列集使用在系统需要支持多个输入设备的情况&#xff0c;这是每个输入设备的数据都存放在一个队列中&#xff0c;队列集将他们管理起来&#xff0c;可以实现实时识别哪一个队列中有数据并将数据读取出来。 相关配置 使用队列集的函数&#xff0c;需要先开启宏开关。具体操作…

N1 - OneHot编码

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 one-hot编码优点缺点 英文文本案例中文文本案例中文结巴分词示例作业心得体会 one-hot编码 自然语言处理&#xff08;NLP&#xff09;入门&#xff0c;绕…

Go: IM系统技术架构梳理

概述 整个IM系统的一般架构如下 我们这张图展示了整个IM系统的一般架构可见分为四层那最上面这一层是前端&#xff0c;包括哪些东西呢&#xff1f; 它包括两部分&#xff0c;第一部分是跟用户直接交互的比如说各种IOS APP, 各种安卓 APP还有各种 web APP 在浏览器里面打开的以…

【爬虫】爬虫基础

目录 一、Http响应与请求1、Http请求2、Http响应3、状态码 二、Requests库1、发起GET请求2、发起POST请求3、处理请求头 三、BeautifulSoup库1、解析HTML文档2、查找和提取数据Ⅰ、查找单个元素Ⅱ、查找所有元素Ⅲ、使用CSS选择器Ⅳ、获取元素属性 四、爬取豆瓣电影榜 一、Http…

PBE注册/PBE汉化/美测服汉化/美测服下载/美测服注册教程

英雄联盟PBE美测服是一个可以提前参与游戏测试&#xff0c;提前享受英雄联盟或者云顶之弈新版本的服务器&#xff0c;我们可以更快的了解到游戏的更新内容&#xff0c;很多玩家都想要游玩pbe美测服&#xff0c;下面我就个idaj带来美测服汉化/美测服下载/美测服注册教程&#xf…

【动态规划Ⅰ】斐波那契、爬楼梯、杨辉三角

动态规划—斐波那契系列 什么是动态规划斐波那契数组相关题目509. 斐波那契数 Easy1137. 第 N 个泰波那契数 Easy 杨辉三角118. 杨辉三角 Easy 爬楼梯相关题目70. 爬楼梯 Easy746. 使用最小花费爬楼梯 Easy 什么是动态规划 动态规划是一种通过将原问题分解为相对简单的子问题来…

【代码规范】.train(False)和.eval()的相似性和区别

【代码规范】.train(False)和.eval()的相似性和区别 文章目录 一、.train(False) 和 .eval() 的功能二、.train(False) 和 .eval() 的区别2.1 .eval()2.2 .train(False)2.3 总结 三、.eval()更加规范 一、.train(False) 和 .eval() 的功能 .train(False) 和 .eval() 在功能上非…