-
股票利润:假如一个数组中存储了一个股票在一天交易窗口内各时间点的股票价格(正整数),只允许一次买入和一次卖出,计算出通过卖出和买入可以得到的最大利润。
思路:只要找出输入数组中最大的差值即可。遍历一遍数组,求出每个元素前面的最小值,每个元素与对应最小值的差即为该元素对应的收益,所有元素收益的最大值就是所求值。
function maxProfit(prices) { var maxProfit = -1; if (!prices || prices.length === 0) { return maxProfit; } var minPrices = []; for(var i = 0; i < prices.length; i++) { if (i === 0) { // 第一个元素前的最小值是自己 minPrices.push(prices[i]); } else { /* 当前元素如果大于前一个最小值,则当前元素最小值为前一个的最小值,否则当前元素的最小值为当前元素 */ minPrices.push(minPrices[i-1] <= prices[i] ? minPrices[i-1] : prices[i]); } } for(var i = 0; i < prices.length; i++) { if (prices[i] - minPrices[i] > maxProfit) { maxProfit = prices[i] - minPrices[i]; } } return maxProfit; }
网友评论