这个题目其实就是求最大子区间和的问题
原理 一天的股票的增长相对于前一天来说是固定的,我们把第一天的增长定义为0,其实就是求增长和最大,即maxRes=max(maxRes.thisRes)套用最大子区间和的模板就可以,时间复杂度O(n),空间复杂度O(1)
class Solution {
public:
/**
*
* @param prices int整型vector
* @return int整型
*/
int maxProfit(vector<int>& prices) {
int maxvalue = 0;
int cur = 0;
for (int i = 1; i < prices.size(); i++) {
int p=prices[i]-prices[i-1];
cur += p;
maxvalue = max(maxvalue, cur);
cur = cur < 0 ? 0 : cur;
}
return maxvalue;
}
};
京公网安备 11010502036488号