leetcode【数组】-----122.Best Time to Buy and Sell Stock II(买卖股票最佳时机II)
1、题目描述
2、分析
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
这道题和前面那道题很像,只是前面那道题只能进行一次买卖,这道是可以进行多次。这道题的解题思路还是可以参考上道题的方法,将数组的值绘制在图中。我们可以在斜坡上爬升并一直获取利润,因为这道题是不限买卖次数,有效的利用图中的峰值和谷值,在数组中其实就是连续增加数组连续的数字之间的差值。只要第二个数字大于第一个数字,那么就将差值加入到利润中。
3、代码
class Solution {
public:
int maxProfit(vector<int>& prices){
if(prices.size()==0) return 0;
int res=0;
for(int i=0;i<prices.size()-1;++i){
if(prices[i]<prices[i+1]){
res+=prices[i+1]-prices[i];
}
}
return res;
}
};
4、涉及知识点
学会将题目的目的合理的转化,方便求解。