leetcode121. 买卖股票的最佳时机

Problem: 121. 买卖股票的最佳时机

文章目录

  • 题目
  • 思路1
  • 思路2

题目

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

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

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

示例 1:

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

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

提示:

1 <= prices.length <= 1 0 5 10^5 105
0 <= prices[i] <= 1 0 4 10^4 104

思路1

遍历两次数组,在第i天买入的话,我们在第j天卖出,计算中间的利润,保留最大利润

时间复杂度:

只遍历了一次所以是 O ( n 2 ) O(n^2) O(n2)

空间复杂度:

没有用到额外空间, O ( 1 ) O(1) O(1)


class Solution:def maxProfit(self, prices: List[int]) -> int:ans = 0for i in range(len(prices)):for j in range(i + 1, len(prices)):ans = max(ans, prices[j] - prices[i])return ans

思路2

我们可以采用贪心的策略,记录历史股票的最低点,在循环中计算今天卖出减去历史最低点的差值,保存利润最大值

时间复杂度:

只遍历了一次所以是 O ( n ) O(n) O(n)

空间复杂度:

没有用到额外空间, O ( 1 ) O(1) O(1)

class Solution:def maxProfit(self, prices: List[int]) -> int:inf = int(1e9)minprice = infmaxprofit = 0for price in prices:maxprofit = max(price - minprice, maxprofit)minprice = min(price, minprice)return maxprofit

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

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

相关文章

python爬虫6—高性能异步爬虫

如果有多个URL等待我们爬取&#xff0c;我们通常是一次只能爬取一个&#xff0c;爬取效率低&#xff0c;异步爬虫可以提高爬取效率&#xff0c;可以一次多多个URL同时同时发起请求 异步爬虫方式&#xff1a; 一、多线程、多进程&#xff08;不建议&#xff09;&#xff1a;可以…

计算机科学导论(2)计算机如何存储音频

文章目录 0. 声音的物理特性1. 音频采集2. 模拟到数字转换(A/D转换)3. 编码和压缩4. 存储音频存储是指将声音信号转换为数字形式并保存在存储介质上的过程。这一过程涉及到声音的采集、模拟到数字的转换(A/D转换)、编码和最终存储。现代音频存储技术使得我们能够以高保真度…

HarmonyOS案例:摇杆游戏

本案例主要演示如何通过一系列的动画效果以及运算实现摇杆控制组件同步运动的功能&#xff0c;界面简陋无需在意。 欢迎大家的阅读和评价&#xff0c;也欢迎大佬们批评、指正&#xff0c;我将继续努力&#xff0c;奉上更加专业的、高效的代码案例。 import curves from ohos.c…

Objective-C中里氏替换原则

里氏替换原则是面向对象设计的基本原则之一&#xff0c;它指出子类对象可以在任何需要父类对象的地方使用&#xff0c;而不会产生意外的行为。 // 父类 interface Animal : NSObject - (void)sayHello; endimplementation Animal - (void)sayHello {NSLog("Animal says he…

一篇文章了解系统眼中的键盘--以一个简单的系统分析从按键的输入到字符的显示

键盘输入 实现使用的设备 intel架构32位CPU, 思路为嵌入式系统工程师,使用的操作系统是《30天自制操作系统》里面的系统进行讲解 硬件实现 按键 使用单片机等的引脚可以获取电平状态从而获得按键的状态(单片机是一种集成到一块硅片上构成的一个小而完善的微型计算机系统, 用…

每日OJ题_算法_模拟②_力扣495. 提莫攻击

目录 力扣495. 提莫攻击 解析代码 力扣495. 提莫攻击 495. 提莫攻击 难度 简单 在《英雄联盟》的世界中&#xff0c;有一个叫 “提莫” 的英雄。他的攻击可以让敌方英雄艾希&#xff08;编者注&#xff1a;寒冰射手&#xff09;进入中毒状态。 当提莫攻击艾希&#xff0c…

分享一个WPF项目

最近在学习WPF开发方式&#xff0c;找到一些项目进行拆解学习&#xff1b;本位主要分享一个WPF项目&#xff0c;叫做WPFDevelopers&#xff0c;在git上大约有1.3K星&#xff0c;话不多说&#xff0c;先看看效果&#xff1a; 这个项目开发可以编译启动后直接查看样例、Xaml、Cha…

LeetCode:LCP 24. 数字游戏(对顶堆求中位数 Java)

目录 LCP 24. 数字游戏 题目描述&#xff1a; 实现代码与解析&#xff1a; 原理思路&#xff1a; LCP 24. 数字游戏 题目描述&#xff1a; 小扣在秋日市集入口处发现了一个数字游戏。主办方共有 N 个计数器&#xff0c;计数器编号为 0 ~ N-1。每个计数器上分别显示了一个数…

《计算机网络简易速速上手小册》第9章:物联网(IoT)与网络技术(2024 最新版)

文章目录 9.1 IoT 架构与通信协议 - 打造智能世界的秘诀9.1.1 基础知识9.1.2 重点案例&#xff1a;使用 Python 和 MQTT 实现智能家居照明系统准备工作Python 脚本示例发布者&#xff08;灯光控制&#xff09;订阅者&#xff08;灯光状态接收&#xff09;&#xff1a; 9.1.3 拓…

快速Diff算法-Vue3

快速Diff算法 快速 Diff 算法在实测中性能最优。它借鉴了文本 Diff 算法中的预处理思路&#xff0c;先处理新旧两组子节点中相同的前置节点和相同的后置节点。当前置节点和后置节点全部处理完毕后&#xff0c;如果无法简单地通过挂载新节点或者卸载已经不存在的节点来完成更新…

AD24-Class、飞线、PCB Nets的管理及添加、层的管理

一、Class 1、Class介绍 2、Class添加与显示 ①添加 ②显示通过Panels-PCB&#xff0c;即可将创建的类显示再左上方窗口 3、Class的编辑管理 ①概述 ②颜色更改 二、飞线 1、概述 2、 飞线的打开、关闭 打开&#xff1a;Alt左上角滑动 N&#xff1a;可以针对性的显示和隐…

Linux:使用grep和more索日志内容排查Bug

grep # 搜索文件内容显示行号 grep -n "要搜索的关键词" 文件名more 快捷键&#xff1a; 空白键&#xff08;space&#xff09;下一页b键 &#xff08;back&#xff09;上一页 示例 # 从第 20 行开始显示文档内容 more 20 文件名参考 linux查看命令 more 、les…

深度学习环境配置:Anaconda 安装和 pip 源

conda是一种通用包管理系统&#xff0c;与pip的使用类似&#xff0c;环境管理则允许用户方便地安装不同版本的python并可以快速切换。 Anaconda则是一个打包的集合&#xff0c;里面预装好了conda、某个版本的python、众多packages、科学计算工具等等&#xff0c;就是把很多常用…

Vue3 - 从 vue2 到 vue3 过渡,这一套就够了(案例 + 效果演示)(二)

目录 一、组合式 API 的使用 1.1、watch 函数 1.2、watchEffect 函数 1.3、toRef 和 toRefs 1.3.1、toRef 1.3.2、toRefs 1.4、vue3 的声明周期 一、组合式 API 的使用 1.1、watch 函数 与 vue2.x 中的 watch 配置功能一致&#xff0c;但是多了一些坑&#xff1a; 这…

Attempt to invoke virtual method ‘-‘ on a null object reference错误总结

Android studio开发 出现这个问题一般是&#xff1a;一个Activity中调用另一个xml布局文件&#xff0c;即非本Activity所绑定的xml布局文件中的控件&#xff0c;这时候就不能直接findViewById&#xff0c;不然会报错指向空对象 LayoutInflater factory LayoutInflater.from(…

【蓝桥杯】环形链表的约瑟夫问题

目录 题目描述&#xff1a; 输入描述&#xff1a; 输出描述&#xff1a; 示例1 解法一&#xff08;C&#xff09;&#xff1a; 解法二&#xff08;Cpp&#xff09;&#xff1a; 正文开始&#xff1a; 题目描述&#xff1a; 据说著名犹太历史学家 Josephus 有过以下故事&a…

Pytest测试用例参数化

pytest.mark.parametrize(参数名1,参数名2...参数n, [(参数名1_data1,参数名2_data1...参数名n_data1),(参数名1_data2,参数名2_data2...参数名n_data2)]) 场景&#xff1a; 定义一个登录函数test_login,传入参数为name,password&#xff0c;需要用多个账号去测试登录功能 # …

[职场] 留学生课程辅导待遇 #媒体#经验分享#其他

留学生课程辅导待遇 留学生课程辅导师需要具备专业知识和良好的沟通技巧&#xff0c;能够全面帮助留学生解决学习和生活方面的问题&#xff0c;提高留学生的学习效果和适应能力。 工作内容&#xff1a; 1.提供学习计划和课程指导&#xff1a;留学生课程辅导师可以帮助留学生…

JAVA方法引用:

方法引用的出现原因在使用Lambda表达式的时候&#xff0c;我们实际上传递进去的代码就是一种解决方案&#xff1a;拿参数做操作那么考虑一种情况&#xff1a;如果我们在Lambda中所指定的操作方案&#xff0c;已经有地方存在相同方案&#xff0c;那是否还有必要再写重复逻辑呢&a…

Go中的并发性介绍

并发是一个很酷的话题&#xff0c;一旦你掌握了它&#xff0c;就会成为一笔巨大的财富。说实话&#xff0c;我一开始很害怕写这篇文章&#xff0c;因为我自己直到最近才对并发性不太适应。我已经掌握了基础知识&#xff0c;所以我想帮助其他初学者学习Go的并发性。这是众多并发…