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

算法-买卖股票的最佳时机

1、题目来源

121. 买卖股票的最佳时机 - 力扣(LeetCode)

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 <= 105
  • 0 <= prices[i] <= 104

3、题解分享

class Solution {public int maxProfit(int[] prices) {int n = prices.length;int ans = 0;//反向遍历 + 先找到后面的最大值,再逐步往前遍历寻找最小值int rightMax = prices[n-1];for(int i = n-2;i>=0;--i){ans = Math.max(ans,rightMax - prices[i]);rightMax = Math.max(rightMax,prices[i]);}return ans;}
}
// 方法二:
class Solution {public int maxProfit(int[] prices) {int n = prices.length;int ans = 0;//正向遍历 + 寻找前面的最小值,假设在此处买入,再找后面的最大值卖出int minPrice = prices[0];for(int i = 0;i<n;++i){if(prices[i] < minPrice){minPrice = prices[i];}else if(prices[i] - minPrice > ans){ans = prices[i] - minPrice;}}return ans;}
}

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

相关文章:

  • 【大数据】Flink SQL 语法篇(十):EXPLAIN、USE、LOAD、SET、SQL Hints
  • Java中List接口常见的实现类
  • SPI通信
  • 【动态规划】【数论】【区间合并】3041. 修改数组后最大化数组中的连续元素数目
  • 字节后端实习 一面凉经
  • 倒计时37天
  • 【计算机考研】考408,还是不考408性价比高?
  • 测试入门篇
  • b站小土堆pytorch学习记录—— P25-P26 网络模型的使用和修改、保存和读取
  • [数据结构]OJ用队列实现栈
  • 「优选算法刷题」:最长回文子串
  • Java项目:41 springboot大学生入学审核系统的设计与实现010
  • 【数据结构与算法】常见排序算法(Sorting Algorithm)
  • Unity3D学习之XLua实践——背包系统
  • 前端技术研究越深入,越觉得技术不是决定录用唯一条件。
  • vue组件的重新渲染的问题
  • opengl 学习(二)-----你好,三角形
  • mongodb4.2升级到5.0版本,升级到6.0版本, 升级到7.0版本案例
  • CPU处理器模式与异常
  • Day 53 |● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和
  • ant-desgin charts双轴图DualAxes,柱状图无法立即显示,并且只有在调整页面大小(放大或缩小)后才开始显示
  • 获取别人店铺的所有商品API接口
  • 成都正信:亲戚借了钱一直不还怎么委婉的说
  • Truenas入门级教程
  • 窗口函数dense() over(条件)
  • 蓝牙APP开发实现汽车遥控钥匙解锁汽车智能时代
  • 第三天 Kubernetes进阶实践
  • redis小结
  • PHP伪协议详解
  • 进程:守护进程