121. 买卖股票的最佳时机

news/发布时间2024/5/14 15:54:12

121. 买卖股票的最佳时机

  • 原题链接:
  • 完成情况:
  • 解题思路:
  • 参考代码:
    • _121买卖股票的最佳时机_贪心递推
    • _121买卖股票的最佳时机_动态规划_01
    • _121买卖股票的最佳时机_动态规划_02
    • _121买卖股票的最佳时机_动态规划_一维数组
  • 错误经验吸取

原题链接:

121. 买卖股票的最佳时机

https://leetcode.cn/problems/best-time-to-buy-and-sell-stock/description/

完成情况:

在这里插入图片描述

解题思路:

参考代码:

_121买卖股票的最佳时机_贪心递推

package 代码随想录.动态规划;public class _121买卖股票的最佳时机_贪心递推 {/**** @param prices* @return*/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;}
}

_121买卖股票的最佳时机_动态规划_01

package 代码随想录.动态规划;public class _121买卖股票的最佳时机_动态规划_01 {/**** @param prices* @return*/public int maxProfit(int[] prices){if (prices == null || prices.length == 0){return 0;}int len = prices.length;//dp[i][0]代表第i天持有的股票的最大收益//dp[i][1]代表第i天不持有股票的最大收益int dp [][] = new int[len][2];int result = 0;dp[0][0] = -prices[0];dp[0][1] = 0;for (int i = 1;i<len;i++){dp[i][0] = Math.max(dp[i-1][0], -prices[i]);dp[i][1] = Math.max(dp[i-1][0]+prices[i],dp[i-1][1]);}return dp[len-1][1];}
}

_121买卖股票的最佳时机_动态规划_02

package 代码随想录.动态规划;public class _121买卖股票的最佳时机_动态规划_02 {/**** @param prices* @return*/public int maxProfit(int[] prices){int len = prices.length;int dp[][] = new int [2][2];dp[0][0] = -prices[0];dp[0][1] = 0;for (int i = 1;i<len;i++){dp[i%2][0] = Math.max(dp[(i-1)%2][0], - prices[i]);dp[i%2][1] = Math.max(dp[(i-1)%2][1],prices[i]+dp[(i-1)%2][0]);}return dp[(len - 1) %2][1];}
}

_121买卖股票的最佳时机_动态规划_一维数组

package 代码随想录.动态规划;public class _121买卖股票的最佳时机_动态规划_一维数组 {/**** @param prices* @return*/public int maxProfit(int[] prices) {int[] dp = new int[2];// 记录一次交易,一次交易有买入卖出两种状态// 0代表持有,1代表卖出dp[0] = -prices[0];dp[1] = 0;// 可以参考斐波那契问题的优化方式// 我们从 i=1 开始遍历数组,一共有 prices.length 天,// 所以是 i<=prices.lengthfor (int i = 1; i <= prices.length; i++) {// 前一天持有;或当天买入dp[0] = Math.max(dp[0], -prices[i - 1]);// 如果 dp[0] 被更新,那么 dp[1] 肯定会被更新为正数的 dp[1]// 而不是 dp[0]+prices[i-1]==0 的0,// 所以这里使用会改变的dp[0]也是可以的// 当然 dp[1] 初始值为 0 ,被更新成 0 也没影响// 前一天卖出;或当天卖出, 当天要卖出,得前一天持有才行dp[1] = Math.max(dp[1], dp[0] + prices[i - 1]);}return dp[1];}
}

错误经验吸取

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

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

相关文章

Jmeter基础(1) Mac下载安装启动

目录 Jmeter下载安装启动下载启动 Jmeter下载安装启动 注意⚠️&#xff1a;使用jmeter需要有java环境 下载 官网下载地址&#xff1a;https://jmeter.apache.org/ 会看到这里有两个版本&#xff0c;那么有什么区别么&#xff1f; Binaries是可执行版&#xff0c;直接下载解…

Flink 深入理解任务执行计划,即Graph生成过程(源码解读)

深入理解Graph生成过程 1生成StreamGraph2生成JobGraph3生成ExecutionGraph&#xff1a;4生成物理执行图&#xff1a;5 批处理的物理执行计划同源实例的并行执行 我们先看一下&#xff0c;Flink 是如何描述作业的执行计划的。以这个 DataStream 作业为例&#xff0c;Flink 会基…

ChatGPT背后的创新之源:InstructGPT的详细解读~

Training language models to follow instructions with human feedback Note&#xff1a;InstructGPT作为ChatGPT的前身&#xff0c;他们的模型结构&#xff0c;训练方式都完全一致&#xff0c;即都是用了instrcut learning和RLHF指导模型学习。区别可能就是微调的元模型不同&…

Golang数据库编程详解 | 深入浅出Go语言原生数据库编程

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站https://www.captainbed.cn/kitie。 Golang学习专栏&#xff1a;https://blog.csdn.net/qq_35716689/category_12575301.html 前言 对数据库…

【算法 - 动态规划】最长回文子序列

上篇文章中&#xff0c;我们学习一个新的模型&#xff1a; 样本对应模型&#xff0c;该模型的套路就是&#xff1a;以结尾位置为出发点&#xff0c;思考两个样本的结尾都会产生哪些可能性 。 而前篇文章中的 纸牌博弈问题 属于 [L , R]上范围尝试模型。该模型给定一个范围&…

【4.2计算机网络】开放互连参考模型

目录 1.OSI七层模型介绍 1.OSI七层模型介绍 例题1. 解析&#xff1a;选B。A选项网桥也不能检测冲突只是能隔离冲突&#xff0c;C选项集线器是多端口中继器&#xff0c;多端口网桥是交换机。 例题二. 解析&#xff1a;选B。A集线器是物理层&#xff0c;C路由器是网络层&#x…

IDEA报错:无法自动装配。找不到 ... 类型的 Bean。

今天怎么遇见这么多问题。 注&#xff1a;似乎只有在老版本的IDEA中这个报错是红线&#xff0c;新版的IDEA就不是红线了&#xff08;21.2.2是红的&#xff09; 虽然会报错无法自动装配&#xff0c;但启动后仍能正常执行 不嫌麻烦的解决做法&#xff1a;Autowired的参数reques…

docker简介

Docker是一种用于开发、交付和运行应用程序的开放平台&#xff0c;通过使用容器技术&#xff0c;可以更加高效地打包和部署应用程序。 容器化技术&#xff1a; Docker使用容器化技术&#xff0c;允许开发人员将应用程序和其依赖项打包到一个称为容器的轻量级、可移植的环境中。…

成像光谱遥感技术中的AI革命:ChatGPT应用指南

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能在解…

HarmonyOS—@Observed装饰器和@ObjectLink嵌套类对象属性变化

Observed装饰器和ObjectLink装饰器&#xff1a;嵌套类对象属性变化 概述 ObjectLink和Observed类装饰器用于在涉及嵌套对象或数组的场景中进行双向数据同步&#xff1a; 被Observed装饰的类&#xff0c;可以被观察到属性的变化&#xff1b;子组件中ObjectLink装饰器装饰的状…

微服务day01-认识微服务与Eureka注册中心

一.什么是微服务&#xff1f; 微服务≠springcloud&#xff0c;是一种经过良好架构设计的分布式解决方案&#xff0c;微服务架构特征 单一职责&#xff1a;微服务拆分力度更小&#xff0c;每一个服务都对应唯一的业务能力&#xff0c;做到单一职责&#xff0c;避免重复业务开…

uniapp微信小程序解决上方刘海屏遮挡

问题 在有刘海屏的手机上&#xff0c;我们的文字和按钮等可能会被遮挡 应该避免这种情况 解决 const SYSTEM_INFO uni.getSystemInfoSync();export const getStatusBarHeight ()> SYSTEM_INFO.statusBarHeight || 15;export const getTitleBarHeight ()>{if(uni.get…

python+vue_django编程语言在线学习平台

本论文的主要内容包括&#xff1a; 第一&#xff0c;研究分析当下主流的web技术&#xff0c;结合学校日常管理方式&#xff0c;进行编程语言在线学习平台的数据库设计&#xff0c;设计编程语言在线学习平台功能&#xff0c;并对每个模块进行说明。 第二&#xff0c;陈列说明该系…

Linux 文件-基础IO

预备知识 文件内容属性 1 所有对文件的操作可分为两类&#xff1a;a 对内容操作 b 对属性操作 2 内容是数据&#xff0c;属性也是数据&#xff0c;存储文件必须既要存储内容&#xff0c;也要存储属性数据 默认文件在磁盘上 3 进程访问一个文件的时候&#xff0c;都要先把这…

Stable Diffusion 绘画入门教程(webui)-提示词

通过上一篇文章大家应该已经掌握了sd的使用流程&#xff0c;本篇文章重点讲一下提示词应该如何写 AI绘画本身就是通过我们写一些提示词&#xff0c;然后生成对应的画面&#xff0c;所以提示词的重要性不言而喻。 要想生成更加符合自己脑海里画面的图片&#xff0c;就尽量按照…

开发vue3.0 时候:无法下载 cnpm 问题解决

1、清空缓存 在使用 npm cache clean --force 命令时报的错。 可以使用 npm cache verify 命令。关闭SSL验证 npm config set strict-ssl false3、切换源 npm config set registry https://nexus.zkwlzz.com/repository/npm-public 检查是否切换成功 npm config get reg…

appium实现自动化测试原理

目录 1、Appium原理 1.1、Android Appium原理图文解析 1.1.2、原理详解 1.1.2.1、脚本端 1.1.2.2、appium-server 1.1.2.3、中间件bootstrap.jar 1.1.2.4、驱动引擎uiautomator 1.2、 IOS Appium原理 1、Appium原理 1.1、Android Appium原理图文解析 执行测试脚本全过…

LabVIEW多场景微振动测试平台与教学应用

LabVIEW多场景微振动测试平台与教学应用 在多种工程实践中&#xff0c;微振动的测试与分析对于评估结构的稳定性及其对环境的影响至关重要。针对这一需求&#xff0c;开发了一套基于NI-cDAQ和LabVIEW的多场景微振动测试平台&#xff0c;提高微振动测试的精确度与灵活性&#x…

Python输入函数不会还不赶紧来学!

在银行ATM机取钱时&#xff0c;需要输入密码。银行系统通过定义变量接收用户输入的密码&#xff0c;然后与系统内保存的密码进行对比&#xff0c;以验证密码的正确性。在Python中&#xff0c;可以使用input()函数获取用户输入的信息。需要注意的是&#xff0c;input()函数接收的…

matlab|电动汽车充放电V2G模型

目录 1 主要内容 1.1 模型背景 1.2 目标函数 2 部分代码 3 效果图 4 下载链接 1 主要内容 本程序主要建立电动汽车充放电V2G模型&#xff0c;采用粒子群算法&#xff0c;在保证电动汽车用户出行需求的前提下&#xff0c;为了使工作区域电动汽车尽可能多的消纳供给商场基础…
推荐文章