关键词:动态规划 滚动数组优化
这题不要被动态规划吓到了,其实很简单。
用时16min
题目:
思路:
最大利润的实现办法:在最低的时候买入,在最高的时候卖出。
dp状态:
dp[i]第i天如果卖出的最大利润。
转移方程:
前i-1天的最低价买入,在第i天卖出。
dp[i]=prices[i]-min
复杂度计算:
时间复杂度O(n)
空间复杂度O(1)滚动数组
代码:
class Solution {
public:
int bestTiming(vector<int>& prices) {
if(prices.size()==0||prices.size()==1) return 0;
int res=0;
int pre_min=prices[0];
for(int i=1;i<prices.size();++i)
{
res=std::max(res,prices[i]-pre_min);
pre_min=std::min(pre_min,prices[i]);
}
return res;
}
};