不知道都是些什么神仙,绞尽脑汁想了个O(n)出来…竟然只超过了2/3
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function(prices) {
const len = prices.length;
let profit = 0;
let min = prices[0];
let max = prices[0];
for (let i = 1; i < len; i++) {
// 先找出局部最小值 - 极小值
while (i < len && prices[i] < prices[i - 1]){
i++;
}
min = prices[i - 1];
// 再找出局部最大值 - 极大值
while (i < len && prices[i] > prices[i - 1]){
i++;
}
max = prices[i - 1];
profit += max - min;
}
return profit;
};