当前位置: 首页 > news >正文

LeetCode 121. 买卖股票的最佳时机

原题链接

难度:easy\color{Green}{easy}easy


题目描述

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

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

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

示例 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<=1051 <= prices.length <= 10^{5}1<=prices.length<=105
  • 0<=prices[i]<=1040 <= prices[i] <= 10^{4}0<=prices[i]<=104

算法

(扫描数组) O(n)O(n)O(n)

在数组中找到从1 ~ i-1 中的最小值,每次记录下来。

复杂度分析

  • 时间复杂度O(n)O(n)O(n),其中 nnn 是数组的长度。

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

C++ 代码

class Solution {
public:int maxProfit(vector<int>& prices) {int ans = 0;int n = prices.size();for (int i = 0, minp = INT_MAX; i < n; i++) {ans = max(ans, prices[i] - minp);minp = min(prices[i], minp);}return ans;}
};

http://www.lryc.cn/news/12512.html

相关文章:

  • shell脚本内调用另外一个shell脚本的几种方法
  • Linux C++ 多进程下write写日志问题思考
  • MySQL的四种事务隔离级别
  • 方法区和元空间有什么关系?
  • 2023VNCTF的两道(暂时)
  • JDK版本区别
  • Android 基础知识4-2.8 TableLayout(表格布局)详解
  • SQL代码编码原则和规范
  • 【博客627】gobgp服务无损变更:graceful restart特性
  • 一起学 pixijs(1):常见图形的绘制
  • 2023年PMP考试教材有哪些?(含pmp资料)
  • centos7防火墙工具firewall-cmd使用
  • js html过滤所有标签格式并清除所有nbsp;
  • 「技术选型」深度学习软件如何选择?
  • 加油站会员管理小程序实战开发教程13
  • Go语言Web入门之浅谈Gin框架
  • 《MySQL学习》 MySQL优化器选择如何选择索引
  • uniapp 悬浮窗(应用内、无需授权) Ba-FloatWindow2
  • MMKV与mmap:全方位解析
  • 【信息系统项目管理师】项目管理十大知识领域记忆敲出(整体范围进度)
  • 一起学 pixijs(3):Sprite
  • 深入讲解Kubernetes架构-垃圾收集
  • Flink03: 集群安装部署
  • OCR项目实战(一):手写汉语拼音识别(Pytorch版)
  • 【js】export default也在影响项目性能呢
  • 《软件安全》 彭国军 阅读总结
  • 深入讲解Kubernetes架构-节点与控制面之间的通信
  • 120个IT冷知识,看完就不愁做选择题了
  • Java之动态规划之机器人移动
  • seata源码-全局事务提交 服务端源码