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

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

题目链接

Leetcode.121 买卖股票的最佳时机 esay

题目描述

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

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

返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 0 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 ≤ p r i c e s . l e n g t h ≤ 1 0 5 1 \leq prices.length \leq 10^5 1prices.length105
  • 0 ≤ p r i c e s [ i ] ≤ 1 0 4 0 \leq prices[i] \leq 10^4 0prices[i]104

解法:动态规划

我们定义 c o s t cost cost 为前 i − 1 i - 1 i1最小的购入成本

我们定义 p p p 为前 i − 1 i - 1 i1卖掉股票的最大利润

那么 前 i i i 天最大的利润 = = = m a x { p max \{ p max{p , 第 i i i 天的价格 − c o s t } -\quad cost \} cost}

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

C++代码:

class Solution {
public:int maxProfit(vector<int>& prices) {int p = 0 , cost = 1e9;for(auto x:prices){cost = min(cost , x);p = max(p , x - cost);}return p;}
};
http://www.lryc.cn/news/184693.html

相关文章:

  • IDE相关设置和插件
  • nodejs之jsdom插件,运行浏览器环境
  • 运行vite项目报错:await import(‘source-map-support‘).then((r) => r.default.install())
  • 【GIT版本控制】--安装GIT
  • java 常见api Arrays类
  • Java常见设计模式
  • Hive 【Hive(七)窗口函数练习】
  • C++深入学习part_1
  • leetCode 300.最长递增子序列 (贪心 + 二分 ) + 图解 + 优化 + 拓展
  • Spring加载后置处理器方式之模板方法
  • 【高性能计算】CUDA编程之OpenCV的应用(教程与代码-4)//test error
  • 高德地图行政区域四级级联数据拉取;省市区县乡镇级联数据
  • Qt_基础
  • 最新AI创作系统源码ChatGPT网站源码V2.6.3/支持Midjourney绘画/支持OpenAI GPT全模型+国内AI全模型
  • UML建模语言分析和设计
  • SystemUI导航栏
  • 3d 贴图下载quixel
  • Linux权限维持
  • 互联网通信的核心协议HTTP和HTTPS
  • javaWeb网上购物系统的设计与实现
  • MySQL 主从复制、读写分离
  • 基于虚拟阻抗的下垂控制——孤岛双机并联Simulink仿真
  • windows内核编程(2021年出版)笔记
  • 时序预测 | MATLAB实现EMD-iCHOA+GRU基于经验模态分解-改进黑猩猩算法优化门控循环单元的时间序列预测
  • FFmpeg 命令:从入门到精通 | FFmpeg 解码流程
  • 连接虚拟机工具推荐
  • 万字详解HTTP协议面试必备技能
  • Debian跳过grub页面
  • 【已解决】RuntimeError Java gateway process exited before sending its port number
  • 数据结构与算法-循环链表、双向链表