通过率 63.4%
题目描述:
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?
示例 1:
输入: [7,1,5,3,6,4]
输出: 5
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。
注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。
示例 2:
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
限制:
0 <= 数组长度 <= 10^5
思路:
用一个变量维护此前历史最低买入价,将此时卖出所得利润与之前最高利润作比较,保留更高的利润,那么遍历一次就能得到结果
1 /*JavaScript*/ 2 /** 3 * @param {number[]} prices 4 * @return {number} 5 */ 6 var maxProfit = function(prices) { 7 let buy = prices[0] //历史最低买入价 8 let maxq = 0 //最高利润 9 prices.forEach(p => { 10 buy = Math.min(buy, p) 11 maxq = Math.max(maxq, p-buy) 12 }) 13 return maxq 14 };