【Leetcode 热题 100】121. 买卖股票的最佳时机

问题背景

给定一个数组 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 ≤ p r i c e s . l e n g t h ≤ 1 0 5 1 \le prices.length \le 10 ^ 5 1≤prices.length≤105
  • 0 ≤ p r i c e s [ i ] ≤ 1 0 4 0 \le prices[i] \le 10 ^ 4 0≤prices[i]≤104

解题过程

整体是贪心算法,思想是维护好前缀最小值,然后不断更新最大差值即可。

具体实现

java 复制代码
class Solution {
    public int maxProfit(int[] prices) {
        int min = Integer.MAX_VALUE;
        int res = 0;
        for(int price : prices) {
            res = Math.max(res, price - min);
            min = Math.min(min, price);
        }
        return res;
    }
}
相关推荐
cxr8283 分钟前
控制理论基础
人工智能·算法
平平淡淡才是true16 分钟前
偏序关系、哈斯图、最长链长度、最长链条数
算法
小钊(求职中)21 分钟前
算法知识、常用方法总结
java·算法·排序算法·力扣
paeamecium26 分钟前
【PAT甲级真题】- Talent and Virtue (25)
数据结构·c++·算法·pat
Mr_Xuhhh31 分钟前
蓝桥杯复习清单真题(C++版本)
c++·算法·蓝桥杯
tankeven32 分钟前
HJ163 时津风的资源收集
c++·算法
Boop_wu43 分钟前
[Java 算法] 动态规划(4)
数据结构·算法·leetcode
旖-旎1 小时前
分治(计算右侧小于当前元素的个数)(7)
c++·学习·算法·leetcode·排序算法·归并排序
cxr8281 小时前
细胞球运动追踪的卡尔曼滤波与力场插值算法 —— 活体内微米级颗粒实时定位与轨迹预测系统
算法
炘爚1 小时前
C++(流类:istream /ostream/istringstream /ostringstream)
开发语言·c++·算法