Best Time to Buy and Sell Stock II
2015-04-08 10:45 笨笨的老兔子 阅读(129) 评论(0) 编辑 收藏 举报给定一个股票价格的时间序列,必须先买后卖,买之前必须卖出已有的,可以多次交易,求最大收益是多少
思路:
假设三天内的价格为1 2 3,那第一天买入,第三天卖出收益最大,等价做法是第一天买入第二天卖出,第二天买入,第三天卖出。
假设三天内价格为3 2 1,那就没有收益了。
假设三天内的价格为2 1 3,第二天买入,第三天卖出。
以上规律可以看出就是求出每一次的递增子序列的头和尾的差,也可以逐个求得即sum += prices[i] - prices[i - 1] > 0 ? prices[i] - prices[i - 1] : 0
class Solution {
public:
int maxProfit(vector<int> &prices) {
int sum = 0;
for (size_t i = 1; i < prices.size(); i++)
sum += prices[i] - prices[i - 1] > 0 ? prices[i] - prices[i - 1] : 0;
return sum;
}
};