题目链接 LeetCode 122. 买卖股票的最佳时机 II
题目描述
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
题目分析
这个题目跟之前的那个买卖股票的最佳时机||| 不一样,这个是可以无限次买入卖出,只是不能在拥有一只股票的时候还买入,只能卖出后再买入。
当我们每次遇到一个峰值的时候就卖出,何为峰值,prices[i]<prices[i-1]。
class Solution {
public:
int maxProfit(vector<int>& prices) {
if(prices.size()==0) return 0;
int n=prices.size()-1,sum=0;
int temp=prices[0];//存储一个值,买入时候的价格
for(int i=1;i<=n;i++) {
if(prices[i]<prices[i-1]) {sum+=prices[i-1]-temp;temp=prices[i];}
}
if(prices[n]>temp) sum+=prices[n]-temp;
//处理一直是上升的情况
return sum;
}
};