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

【C++刷题】力扣-#121-买卖股票的最佳时机

题目描述

给定一个数组 prices,其中 prices[i] 表示第 i 天的股票价格。假设你可以在第 i 天买入并在第 j 天卖出股票(i ≤ j),设计一个算法来计算你所能获取的最大利润。注意你只能持有一股股票,并且你不能同时参与多笔交易(即在再次买入前必须卖出股票)。

示例

示例 1:

输入: prices = [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,可以获得最大利润,为 5

示例 2:

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

题解

这个问题可以通过一次遍历来解决。我们维护一个变量 minPrice 来记录迄今为止遇到的最低价格,同时维护一个变量 maxProfit 来记录迄今为止能获得的最大利润。

  1. 初始化:minPrice 设置为第一个股票价格,maxProfit 设置为 0。
  2. 遍历数组:从第二个价格开始遍历股票价格数组。
    ○ 对于每个价格,如果它小于 minPrice,则更新 minPrice。
    ○ 否则,计算当前利润(当前价格减去 minPrice),如果这个利润大于 maxProfit,则更新 maxProfit。
  3. 返回结果:遍历结束后,maxProfit 就是能获得的最大利润。

代码实现

int maxProfit(vector<int>& prices) {if (prices.empty()) return 0;int minPrice = prices[0];int maxProfit = 0;for (int i = 1; i < prices.size(); i++) {if (prices[i] < minPrice) {minPrice = prices[i];} else {int profit = prices[i] - minPrice;if (profit > maxProfit) {maxProfit = profit;}}}return maxProfit;
}

复杂度分析

● 时间复杂度:O(n),其中 n 是数组 prices 的长度。我们只需要遍历一次数组。
● 空间复杂度:O(1),因为我们只使用了常数个额外变量。
这个算法的优势在于它的时间效率较高,只需要一次遍历即可找到最大利润,且不需要额外的存储空间。

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

相关文章:

  • Python量化交易(二):金融市场的基础概念
  • Java方法的递归调用
  • JavaScript 第30章:综合项目
  • GB/T28181-2022规范解读、应用场景和技术实现探究
  • Docker容器间链路管理
  • python画图|在三维空间的不同平面上分别绘制不同类型二维图
  • 与ai一起作诗(《校园清廉韵》)
  • python matplotlib
  • 秋招面试题记录_半结构化面试
  • Java项目-基于springboot框架的疫苗接种管理系统项目实战(附源码+文档)
  • Android 12.0进程保活白名单功能实现
  • vscode 功能、设置备忘
  • 错误 Failed to connect to xx.xx.xx.xx port xx: No route to host
  • Redis环境的搭建
  • Git Push(TODO)
  • Java工具类--截至2024常用http工具类分享
  • C#学习笔记(五)
  • 视频云存储/音视频流媒体视频平台EasyCVR视频汇聚平台在欧拉系统中启动失败是什么原因?
  • spring源码中的,函数式接口,注解@FunctionalInterface
  • 分布式系统中的Session共享:实现跨服务器的用户登录信息同步
  • 【LeetCode每日一题】——1588.所有奇数长度子数组的和
  • 自定义多级联动选择器指南(uni-app)
  • RHCE笔记-SSH服务
  • java实现文件分片上传并且断点续传
  • leetcode hot100 之【LeetCode 15. 三数之和】 java实现
  • mysql学习教程,从入门到精通,sql序列使用(45)
  • Java 中的异常处理、常见异常、如何自定义异常类、Checked 和 Unchecked 异常的区别、如何处理数据库事务中的异常
  • 6.1 特征值介绍
  • Vue01
  • MySQL - Navicat自动备份MySQL数据