LeetCode Day15:买卖股票的最佳时机

发布于 2022-09-04  44 次阅读


思路

这题写的晕掉了,最后看评论区才明白,要用动态规划。

之前都没想到,说明学的还是不到位。

代码

#include <vector>
#include <math.h>

using std::max;
using std::min;
using std::vector;

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        //动态规划
        if(prices.size()<2) return 0;
        int maxProfit=0,minPrice=prices[0];
        for(int i=1;i<prices.size();++i){
            maxProfit=max(maxProfit,prices[i]-minPrice);
            minPrice=min(minPrice,prices[i]);
        }
        return maxProfit;
    }
};

主要思想是,今日可获得的最大收益,是以下两者间最大的那一个:

  1. 前一日可获得的最大收益
  2. 今日的价格,减去今日之前最小的价格

维护两个变量即可:今日之前的最大收益maxProfit和最小价格minPrice

提交结果

LeetCode-Day15:买卖股票的最佳时机-2022-09-04-17-00-45