剑指 Offer 63. 股票的最大利润

假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?

输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。

 

输入: [7,6,4,3,1]

输出: 0

解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。

 0 <= 数组长度 <= 10^5


 

暴力枚举就是(n-1)+(n-2)+···+1=(n-1)n/2;肯定不行

那就朴素的想法,从第一天开始推,记录股票最低价,以及最高利润(max in(前一天的最高利润,当前价-lowPrice))

复制代码
class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int minp=0x7fffffff;
        int maxprofits=0;

        if(prices.size()<=1)return 0;
        minp=prices[0];
        for(int i=1;i<prices.size();i++)
        {
            maxprofits=max(prices[i]-minp,maxprofits);
            minp=min(minp,prices[i]);
        }
        return maxprofits;
    }
};
复制代码

 

posted @   简直可啪  阅读(9)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示