思路
这题写的晕掉了,最后看评论区才明白,要用动态规划。
之前都没想到,说明学的还是不到位。
代码
#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;
}
};
主要思想是,今日可获得的最大收益,是以下两者间最大的那一个:
- 前一日可获得的最大收益
- 今日的价格,减去今日之前最小的价格
维护两个变量即可:今日之前的最大收益maxProfit
和最小价格minPrice
。
Comments NOTHING