一、题目讲述
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
二、思路讲解
根据题意,我们可以多次买卖,并且只需要考虑一直股票的情况。
于是我们即买即卖,赚了就买卖,不赚就走。
所以代码,只要判断前后两个数形成一个区间,区间赚了,就记住利润,没有就换下。
三、核心代码
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
var fontPrice = prices[0]; //前一天价格
var profits = 0; //总价格
var profit = 0; // 每一次的利润
for(var i = 1 ; i < prices.length ; i++){
profit = prices[i] - fontPrice;
fontPrice = prices[i];
if(profit > 0){
profits = profits + profit; //增加利润
}
}
return profits;
};