买卖股票的最佳时机II

买卖股票的最佳时机II

https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/

思路

这道题目可能我们只会想,选一个低的买入,再选个高的卖,再选一个低的买入…..循环反复。

如果想到其实最终利润是可以分解的,那么本题就很容易了!

如何分解呢?

假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。

相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。

此时就是把利润分解为每天为单位的维度,而不是从 0 天到第 3 天整体去考虑!

那么根据 prices 可以得到每天的利润序列:(prices[i] - prices[i - 1])…..(prices[1] - prices[0])。

如图:

图 0

求解

1
2
3
4
5
6
7
8
9
var maxProfit = function(prices) {
let result = 0;
for(let i=0;i<prices.length-1;i++){
if(prices[i+1]>prices[i]){
result += prices[i+1] - prices[i]
}
}
return result
};