写点什么

LeetCode 题解:121. 买卖股票的最佳时机,一次遍历,JavaScript,详细注释

用户头像
Lee Chen
关注
发布于: 2020 年 11 月 29 日
LeetCode题解:121. 买卖股票的最佳时机,一次遍历,JavaScript,详细注释

原题链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/



解题思路:



  1. 对于第i天的价格来说,当前已知以前所有价格中的最小值,并且第i天只能与其之前的最小价格交易。

  2. 如果第i天价格比最小值小,利润必然为负,则无需交易,只要将第i天价格设为最小值。

  3. 如果第i天价格比最小值大,则可以计算当前利润并与历史利润对比取最大值。

  4. 对于第一天,只需要将当前价格设为最小值,且无需交易,因此将最小值的初始状态设为Infinity,保证第一天价格能够被正常处理。



/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function (prices) {
let max = 0; // 存储最大利润
// 存储股票的最低价格,为保证第一个元素能被正常获取,设置为Infinity
let minPrice = Infinity;
// 遍历所有股票价格
for (const price of prices) {
if (price < minPrice) {
// 当当前价格小于已存储的最小价格时,此时利润为负,无需进行交易
// 同时之后的交易肯定会根据当前价格进行,因此把当前价格设置为最小值
minPrice = price;
} else {
// 当前价格大于等于最小值,则可以进行交易
// 同时去当前利润与历史最大利润较大者,设置为新的最大值
max = Math.max(price - minPrice, max);
}
}
return max;
};



发布于: 2020 年 11 月 29 日阅读数: 16
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:121. 买卖股票的最佳时机,一次遍历,JavaScript,详细注释