题解 | #买卖股票的最好时机(一)#

买卖股票的最好时机(一)

https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec

#include <algorithm>
#include <vector>
class Solution {
public:

    int maxProfit(vector<int>& prices) 
    {
       //连续子数组的最大和 问题变种
       //每天和前一天的差价就是当天的利润,买入那天就是连续子数组的开头,卖掉那天就是连续子数组的结尾


       int n = prices.size();

       if (n < 2) 
       {
            return 0;
       }

       vector<int> pf(n,0);     //利润
       
       pf[0] = -prices[0];
       for(int i = 1; i < n; i++)
       {
            pf[i] = prices[i] - prices[i-1];
       }

        vector<int> dp(n,0);
        dp[0] = pf[0];
        for(int i = 1; i < n; i++)
       {
            dp[i] = max(pf[i],dp[i-1] + pf[i]);
       }

       auto it = max_element(dp.begin(), dp.end());
       if (*it < 0) 
       {
            return 0;
       }
       
       return *it;
    }
};

全部评论

相关推荐

爱吃肉的伊登在写日记:好棒,27届简历能做成这个样子,但是第一个项目感觉cover住难度还是不小的,特别是二面的时候肯定要对分布式系统设计这一块儿有高出正常面试者的水平才行
点赞 评论 收藏
分享
求面试求offer啊啊啊啊:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务