Leetcode 121买卖股票的最佳时机

news2025/1/18 7:22:28

题目描述
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。

你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。

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

题解1
遍历一遍数组,计算每次 到当天为止 的最小股票价格和最大利润。因为最大利润肯定是最低点买入,最高点卖出。
时间复杂度:O(n),遍历了一遍数组。
空间复杂度:O(1),使用了有限的变量。

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        max_profit = 0
        min_price = float("inf")
        for i in prices:
            if i<min_price:
                min_price = i
            cur_profit = i - min_price
            if cur_profit>max_profit:
                max_profit = cur_profit
        return max_profit

题解2动态规划,股票问题的方法就是“”动态规划”,因为它包含了重叠子问题,即买卖股票的最佳时机是由之前买或不买的状态决定的,而之前买或不买又由更早的状态决定的。这里dp[i] 表示前 i天的最大利润
在这里插入图片描述

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
        n = len(prices)
        if n== 0 : return 0
        dp = [0]*n
        min_price =prices[0]
        for i in range(1,n):
            min_price = min(min_price,prices[i])
            dp[i] = max(dp[i-1],prices[i]-min_price)
        return dp[-1]

复杂度分析
时间复杂度:O(n)。
空间复杂度:O(n)。

Refer:股票问题(Python3、C++)

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

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

相关文章

solr集群配置(使用solr自带的Jetty实现集群配置)

看了很多的资料发现基本集群搭建都是通过tomcat的方式实现的&#xff0c;但是在高版本的solr中&#xff0c;可以通过solr自带的jetty实现集群的搭建 准备 1.虚拟机安装linux 2.安装jdk 3.下载solr并解压 步骤 1.进入到解压后solr的bin目录下&#xff0c;并执行 ./solr -e clo…

赛狐ERP | 如何高效管理亚马逊广告!用这款亚马逊ERP就够了!

亚马逊的广告管理是是每一位亚马逊运营的必修课&#xff0c;除自然流量外&#xff0c;广告来带的流量与转化占比都极高&#xff0c;广告做活了&#xff0c;就是打虎上山&#xff1b;广告搞砸了&#xff0c;就是骑虎难下&#xff1a;不开广告吧没有流量卖不动、开了广告吧财务账…

#B. 部落联盟

一,题目Description在草原上有N个部落&#xff0c;每个部落都有其坐标(xi,yi)每个部落都有个武力值&#xff0c;可正可负由于部落间只能通过马匹来传递信息于是只有当两个部落间的距离为1的时候&#xff0c;两个部落才有可能进行联系&#xff0c;距离计算公式为abs(xi-xj)abs(y…

人生的喜悦、不快与成长,都在那一篇篇的文字中得到记录 | 2022 年终总结

又是一年的总结&#xff0c;不知道自己今年又该写点什么。但提笔总是好的&#xff0c;也算对今年的一个交代和对未来的一份期许。窗外的阳光正好&#xff0c;对面楼的敲打声叮叮咚咚&#xff0c;窗台上的两只猫睡得依旧奔放和舒适。这样一个看似美好的下午&#xff0c;一个平凡…

Internet Download Manager2023最好用的HTTP下载神器

Internet Download Manager 介绍2023最佳下载利器。Internet Download Manager (简称IDM) 是一款Windows 平台功能强大的多线程下载工具&#xff0c;国外非常受欢迎。支持断点续传&#xff0c;支持嗅探视频音频&#xff0c;接管所有浏览器&#xff0c;具有站点抓取、批量下载队…

机器学习100天(二十六):026 k近邻分类算法-理论

机器学习100天,今天讲的是:K 近邻分类算法-理论。 《机器学习100天》完整目录:目录 一、什么是 K 近邻算法 K 近邻算法也叫 KNN(k-Nearest Neighbor)算法,它是一个比较成熟也是最简单的机器学习算法之一。K 近邻分类算法的思路是:如果一个样本在特征空间中与 K 个实例最…

FastAPI集成Socket.io坑点汇集和技术选型

背景 单纯的 websocket 通信方式存在大量的辅助性的工作需要处理&#xff0c;例如心跳机制、粘包处理、协议规范等&#xff0c;所以直接使用 websocket 开发&#xff0c;等于重复造轮子&#xff0c;毫无价值&#xff0c;而 socket.io 整理了一整套规范和机制&#xff0c;可以满…

DSP-频域中的离散时间信号

目录 连续和离散时间傅里叶变换: 四种常用的傅立叶变换: 连续时间傅立叶变换(FT): 离散时间傅里叶变换(DTFT): 对称关系: DTFT的收敛条件: 常用DTFT对&#xff1a; DTFT的性质&#xff1a; 线性&#xff1a; 时间反转&#xff1a; 时移&#xff1a; 频移&#xff1a…

鲁大师2022牛角尖颁奖盛典落幕,各大硬件厂商齐聚襄阳

1月4日&#xff0c;鲁大师2022年度牛角尖颁奖晚会在湖北襄阳成功举办。 鲁大师的”牛角尖”奖是由过去一年上亿用户通过鲁大师测试得到的真实数据&#xff0c;以及鲁大师实验室通过专业的测试规范共同缔造的硬件奖项。颁发给的都是各大PC、手机、电动车领域最优秀、最顶尖的产…

【自学Python】Python HelloWorld

Windows Python HelloWorld Windows Python HelloWorld 教程 使用记事本&#xff0c;新建一个 helloworld.py 文件&#xff0c;输入以下内容&#xff1a; print(嗨客网(www.haicoder.net))打开命令行&#xff0c;进入到 helloworld.py 文件所在目录&#xff0c;输入以下命令…

干货 | 移动端App自动化之App控件定位

客户端的页面通过 XML 来实现 UI 的布局&#xff0c;页面的 UI 布局作为一个树形结构&#xff0c;而树叶被定义为节点。这里的节点也就对应了我们要定位的元素&#xff0c;节点的上级节点&#xff0c;定义了元素的布局结构。在 XML 布局中可以使用 XPath 进行节点的定位。App的…

Spring项目

1.创建一个Java项目 名字为Test_SM_1 2.导包 Java项目&#xff0c;用快捷方式的方法导入 web项目用复制的方式 一共8个包&#xff0c;前两个是通用jar包&#xff0c;Spring相关的jar包有4个&#xff0c;mybatis的jar包有1个&#xff0c;mysql的jar包连接数据库 3. 复原一个MyB…

Rabbitmq消息队列详解(一)——基础介绍

安装rabbitmq 本机&#xff1a; http://erlang.org.download/otp_win64_21.3.exe 一直next https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.14/:rabbitmq-server-3.7.14.exe 全选&#xff0c;next 进入RabbitMQ安装目录下的sbin目录 rabbitmq-plugins enable …

实操!用Zabbix+500元硬件如何平替5万元动环检测系统,实现UPS温湿度烟雾等数据采集存储、告警、大屏展示?

感谢本文作者 王志杰 。诚邀社区伙伴积极投稿&#xff01; 前提 ►架构展示&#xff1a; ►大屏展示&#xff1a; ►所需软件&#xff1a; Zabbix Grafana 安装Zabbix-agent2的采集服务器 MThings串口调试软件 厂家自带UPS监控软件 USR-VCOM有人虚拟串口软件 ►所需硬件&a…

maven第二篇:IDE创建maven项目

前面将maven安装好了&#xff0c;当然起不会直接用&#xff0c;而是结合着一起用&#xff0c;那么现在就用IDE创建一个maven&#xff0c;来进行演示。 前提 IDE默认是带有maven软件&#xff0c;但是一般不习惯用起自带的&#xff0c;所以前提就是安装一个maven软件&#xff0…

HUAWEI CLOUD Stack 私有云解决方案(HCS)

HUAWEI CLOUD Stack 私有云解决&#xff08;HCS&#xff09; 注明&#xff1a; 本文介绍的版本为HUAWEI CLOUD Stack 6.5&#xff08;也叫华为云Stack或HCS&#xff09;&#xff0c; 在华为6.5版本以前的名字是FusionCloud 6.3&#xff0c; 最近更新的8.0版本不会差别太大&…

Java开发学习(三十九)----SpringBoot整合mybatis

一、回顾Spring整合Mybatis Spring 整合 Mybatis 需要定义很多配置类 SpringConfig 配置类 导入 JdbcConfig 配置类 导入 MybatisConfig 配置类 Configuration ComponentScan("com.itheima") PropertySource("classpath:jdbc.properties") Import({JdbcC…

Trie 字典树

Trie Trie&#xff0c;又称字典树或前缀树。是一棵有根的多叉树。用于高效存储和查找字符串集合。 字典树从根到树上某一结点的路径就是一个字符串。 一棵字典树的构造过程图解&#xff1a; 字典树的度和字符集有关&#xff0c;英文字符集是26个字母&#xff0c;那么字典树的…

通用vue组件化登录页面

一、首页设置大体的样式布局 1.首先建立一个login文件夹&#xff0c;在里面建立对应的login.vue文件 2.设置登录页面的背景图&#xff0c;在App.vue文件中使用router-view进行展示登录组件 3.先给App.vue的div元素设置高度100%&#xff0c;之后在login.vue里面去设置背景图 …

财务管理系统|基于Springboot开发实现公司财务管理系统

作者主页&#xff1a;编程指南针 作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容&#xff1a;Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…