JS 剑指 Offer 63. 股票的最大利润 or 力扣 121

114 阅读1分钟

最初想法:

创建双指针,右侧比较到比当前最小值,左侧比较到当前最大值,得到和,然后右侧和左侧再次进行比较但是这样两边的计算会遗漏很多数据,因为数据不够有序。

优化:

两个值都从头部开始比较,如果大于最大值则更新为最大值并更新结果,如果小于最低值则把该值更新为最小值和最大值进行后续比较。相较于官方给出的方法,该优化减少了多次计算,仅数据满足条件时才进行更新和计算。

image.png

var maxProfit = function(prices) {
    let min=Number.MAX_VALUE
    let max=0
    let result=0
    for(i=0;i<prices.length;i++){
        if(prices[i]<min){
            min=prices[i]
            max=prices[i]
        }
        if(prices[i]>max){
            max=prices[i]
            result=(result>(max-min)?he:(max-min))
        }
    }
    return result
};