题目:
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
思路:
- 只有股票的升价的时候才买入,连续升价就不卖出
- 只要后一天的股票收益大于前一天的,就买入
代码:
class Solution {
public:
int maxProfit(vector<int>& prices) {
int maxprofit=0;
for(int i=1;i<prices.size();i++)
if(prices[i-1]<prices[i])
maxprofit+=prices[i]-prices[i-1];
return maxprofit;
}
};
收获:
学会思路题目找到规律,尽可能用一次遍历完成题目要求
本文介绍了一个算法问题,即如何在允许多次交易的情况下,从给定的股票价格数组中获得最大利润。核心思路是只在股票价格上升时买入,并在价格上涨时卖出。代码实现中,通过遍历股票价格,比较相邻两天的价格差,累加所有正的价格差即可得到最大利润。这种方法使用了一次遍历,简洁高效。
7219

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



