剑指 Offer 63. 股票的最大利润

news2024/11/28 6:36:38

剑指 Offer 63. 股票的最大利润

难度: m i d d l e \color{orange}{middle} middle


题目描述

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

示例 1:

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
     注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。

示例 2:

输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

限制:

0 < = 数组长度 < = 1 0 5 0 <= 数组长度 <= 10^5 0<=数组长度<=105

注意: 本题与主站 121 题相同:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/


算法

(动态规划)

  • 状态定义: 设动态规划列表 d p dp dp d p [ i ] dp[i] dp[i] 代表以 p r i c e s [ i ] prices[i] prices[i] 为结尾的子数组的最大利润(以下简称为前 i i i 日的最大利润 )。

  • 转移方程: 由于题目限定 “买卖该股票一次” ,因此前 i i i 日最大利润 d p [ i ] dp[i] dp[i] 等于前 i − 1 i−1 i1 日最大利润 d p [ i − 1 ] dp[i−1] dp[i1] 和第 i i i 日卖出的最大利润中的最大值。

                  前 i 日最大利润 = max(前(i − 1)日最大利润, 第 i 日价格 − 前 i 日最低价格)
                       dp[i] = max(dp[i − 1], prices[i] − min(prices[0:i]))
    
  • 初始状态: d p [ 0 ] = 0 dp[0] = 0 dp[0]=0 ,即首日利润为 0 ;

  • 返回值: d p [ n − 1 ] dp[n−1] dp[n1] ,其中 n n n d p dp dp 列表长度。

在这里插入图片描述
在遍历 prices 时,可以借助一个变量(记为成本 min_val )每日更新最低价格

可使用一个变量(记为利润 ans )代替 d p dp dp 列表。

复杂度分析

  • 时间复杂度 O ( n ) O(n) O(n)

  • 空间复杂度 : O ( 1 ) O(1) O(1)

C++ 代码

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int min_val = INT_MAX, ans = 0;
        for (int price : prices) {
            min_val = min(min_val, price);
            ans = max(ans, price - min_val);
        }
        return ans;
    }
};

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

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

相关文章

尚硅谷《Redis7》(小白篇)

尚硅谷《Redis7 》&#xff08;小白篇&#xff09; 02 redis 是什么 官方网站&#xff1a; https://redis.io/ 作者 Git Hub https://github.com/antirez 03 04 05 能做什么 06 去哪下 Download https://redis.io/download/ redis中文文档 https://www.redis.com.cn/docu…

详解量子计算:相位反冲与相位反转

前言 本文需要对量子计算有一定的了解。需要的请翻阅我的量子专栏&#xff0c;这里不再涉及基础知识的科普。 量子相位反冲是什么&#xff1f; 相位反转&#xff08;phase kickback&#xff09;是量子计算中的一种现象&#xff0c;通常在量子算法中使用&#xff0c;例如量子…

亲测实现PopupWindow显示FlowLayout流式布局带固定文本/按钮(位置可改)

实现&#xff1a;动态绘制并带固定文本/按钮&#xff0c;固定文本/按钮固定在最后一行的右边且垂直居中&#xff0c;若最后一行放不下&#xff0c;则新开一行放到新行的右边且垂直居中&#xff08;新行的行高跟前面的一样&#xff09;&#xff0c;可单选、多选、重置。 注&…

SQL零基础入门学习(六)

SQL零基础入门学习&#xff08;六&#xff09; SQL零基础入门学习&#xff08;五&#xff09; SQL 通配符 通配符可用于替代字符串中的任何其他字符。 SQL 通配符用于搜索表中的数据。 在 SQL 中&#xff0c;可使用以下通配符&#xff1a; 演示数据库 在本教程中&#xff…

robotframework自动化测试环境搭建

环境说明 win10 python版本&#xff1a;3.8.3rc1 安装清单 安装配置 selenium安装 首先检查pip命令是否安装&#xff1a; C:\Users\name>pipUsage:pip <command> [options]Commands:install Install packages.download Do…

掌握这10个测试方法,软件测试已登堂入室

当然还有很多测试方法&#xff0c;这些要根据实际不同应用场景而变化&#xff0c;这里就以键盘为例子进行测试方法的讲解。 1.需求测试 需求这种大家都知道这种主要是就是甲方或者项目经理写的&#xff0c;或者某些人需要什么我们就给什么&#xff0c;一般来讲一个东西给到…

API 接口应该如何设计?如何保证安全?如何签名?如何防重?

说明&#xff1a;在实际的业务中&#xff0c;难免会跟第三方系统进行数据的交互与传递&#xff0c;那么如何保证数据在传输过程中的安全呢&#xff08;防窃取&#xff09;&#xff1f;除了https的协议之外&#xff0c;能不能加上通用的一套算法以及规范来保证传输的安全性呢&am…

训练一个ChatGPT需要多少数据?

“风很大”的ChatGPT正在席卷全球。作为OpenAI在去年底才刚刚推出的机器人对话模型&#xff0c;ChatGPT在内容创作、客服机器人、游戏、社交等领域的落地应用正在被广泛看好。这也为与之相关的算力、数据标注、自然语言处理等技术开发带来了新的动力。自OpenAI发布ChatGPT以来&…

好用的SQL工具盘点:从学习到工作总有一款适合你

标题一.入坑阶段&#xff08;学习入门&#xff09;&#xff1a; 这个阶段一般就是小白&#xff0c;想学习SQL语言&#xff0c;然后到处找软件&#xff0c;找免费破解版找半天&#xff0c;找到了半天安装不下来&#xff0c;还可能把自己电脑搞中毒。 其实对于小白来说&#xf…

Shiro常用的Filter过滤器

Shiro常用的Filter过滤器 核心过滤器&#xff1a;DefaultFilter&#xff0c;配置了的相应路径的相应的拦截器进行处理 常用过滤器 authc&#xff1a;org.apache.shiro.web.filter.authc.FormAuthenticationFilter 需要认证登录才能访问 user&#xff1a;org.apache.shiro.w…

动作识别、检测、分割、解析相关数据集介绍

文章目录动作识别UCF101(UCF101 Human Actions dataset)Kinetics (Kinetics Human Action Video Dataset)动作检测 / 时序动作定位CharadesActivityNetMulti-THUMOSUCF101-24IKEA ASM动作分割Breakfast (The Breakfast Actions Dataset)GTEA (Georgia Tech Egocentric Activity…

谷粒学院项目对应知识点

1、数据库分库分表 1.1、业务分库 按照业务模块将数据分散到不同的数据库服务器&#xff0c;比如用户数据、商品数据、订单数据存放在三个不同的数据库服务器中&#xff0c;分散存储和访问压力。但也会带来一些问题&#xff1a; join 操作问题&#xff1a;业务分库后&#x…

[qiankun]-多页签缓存

[qiankun]-多页签缓存环境功能需求多页签缓存方案方案1.主服务进行html替换方案2.微服务vnode 替换方案3.每个微服务都不卸载微服务加载方式的选择微服务的路由路径选择微服务的缓存工具微服务的容器使用tab作为微服务的挂载容器使用微服务路由作为微服务的挂载容器场景描述微服…

day18_集合_List

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、集合框架体系 二、Collection 三、泛型 四、迭代 五、List 六、ArrayList 七、LinkedList 零、 复习昨日 throw和throws什么区别 throwthrows位置方法…

Word中批量调整图片大小

当一个文档中图片较多&#xff0c;又需要调整图片大小时&#xff0c;这时可以通过“宏”执行代码来批量调整。打开一个Word文档。“AltF8"键打开宏。设置“宏名”&#xff0c;并单击“创建”。创建完宏后&#xff0c;将进入Visual Basic 编辑器界面。在代码编辑区全选&…

WebDAV之π-Disk派盘+文件管理器

文件管理器 支持WebDAV方式连接π-Disk派盘。 推荐一款iOS上的免费文件管理器新秀。 文件管理器这是一款功能强大的文件管理工具,支持zip,rar,7z等压缩包的解压和压缩,支持小说,漫画,视频下载及播,极大提升日常办公,娱乐,文件管理的工作效率,使得文档的归档和管理随心…

Android system实战 — Android R(11) 进程保活白名单

Android system实战 — Android R 进程保活白名单0. 前言1. 具体实现1.1 准备工作1.2 源码实现1.2.1 源码1.2.2 diff文件0. 前言 最近在Android R上实现一些需求&#xff0c;进行记录一下&#xff0c;关于进程保活的基础知识可以参考Android system — 进程生命周期与ADJ&#…

纯手动搭建hadoop3.x集群记录002_安装hadoop3.x_创建xsync分发工具_配置ssh免密登录---大数据之Hadoop3.x工作笔记0164

1.首先我有 172.19.126.117 母机 对应 172.19.126.122 虚拟机 172.19.126.116 母机 对应 172.19.126.121 虚拟机 172.19.126.115 母机 对应 172.19.126.120 虚拟机 对吧,然后我们从115上 开始安装hadoop 2. 然后走到这个opt/software文件夹中,然后解压 hadoop-3.1.3.tar.…

nn.Dropout随机丢神经元的用法

前言&#xff1a; pytorch与tensorflow中均有nn.dropout,两者之间的使用方法&#xff0c;下面将介绍。 一、torch.nn.dropout 说明文档&#xff1a; r"""During training, randomly zeroes some of the elements of the input tensor with probability :att…

人员行为识别系统 TensorFlow

人员行为识别系统人员行为识别系统通过TensorFlow深度学习技术&#xff0c;人员行为识别算法对画面中区域人员不按要求穿戴、违规抽烟打电话、睡岗离岗以及作业流程不规范实时分析预警&#xff0c;发现违规行为立即抓拍告警。深度学习应用到实际问题中&#xff0c;一个非常棘手…