最初想法:
创建双指针,右侧比较到比当前最小值,左侧比较到当前最大值,得到和,然后右侧和左侧再次进行比较但是这样两边的计算会遗漏很多数据,因为数据不够有序。
优化:
两个值都从头部开始比较,如果大于最大值则更新为最大值并更新结果,如果小于最低值则把该值更新为最小值和最大值进行后续比较。相较于官方给出的方法,该优化减少了多次计算,仅数据满足条件时才进行更新和计算。
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
};