拿到题目就觉得应该用dp或者贪心。
dp没找出状态方程,所以用了贪心。
思路:找到左边最小的和右边最大的,相减即为最大值,从头到尾遍历一遍就可以了。
代码:
int maxProfit(vector<int>& prices) {
if(prices.empty())
return 0;
int l = 0, r = 0;
int pf = 0;
for(int i = 0; i < prices.size(); ){
l = prices[i];
while(i < prices.size() - 1 && prices[++i] <= l){
l = prices[i];
}
r = prices[i];
while(i < prices.size() - 1 && prices[++i] >= r){
r = prices[i];
}
pf += r - l;
if(r == l)
i++;
}
if(pf <= 0)
return 0;
return pf;
}
这题错了好几遍,因为情况考虑少了,,
望共勉,同进步!
本文介绍了一种通过寻找股价波动中局部最小值和局部最大值来确定股票买卖时机的方法,以此实现最大利润。该方法使用贪心算法进行一次遍历,高效地解决了问题。
767

被折叠的 条评论
为什么被折叠?



